SparkJava - 区分大小写的端点
SparkJava - Case sensitive endpoints
我有一个 java 代码,它使用 SparkJava (http://sparkjava.com/) 为 http 端点提供服务。
端点是这样生成的:
get("/xxx/yyy", (request, response) -> {
...
return SOMETHING_TO_RETURN
});
使用这种方法我遇到了问题:
假设我定义了一个端点: '/api/status/car' ,
但用户有时会改为调用“/api/status/CAR”。所以问题是像这样定义的 url 区分大小写。
现在我必须以某种方式修复它:不区分大小写。
我看过过滤器(例如 'before'),但我相信我无法修改请求 url (toLowerCase)。
所以主要问题是:通过使用该方法定义端点,我如何将请求 url 修改为小写,或者说 sparkjava urls 应该是以不区分大小写的模式映射。
URL(域名部分除外)可能始终区分大小写。由服务器决定,因此用户永远不会知道。您可以在 W3.org.
中了解更多信息
解决问题的一种方法是使用请求参数:
get("/api/status/:carParam", (request, response) -> {
if (request.params(":carParam").equalsIgnoreCase("car")) {
return SOMETHING_TO_RETURN;
}
});
如果除了 car
之外 /api/status/
下还有更多路由,那么您应该将 :carParam
重命名为更通用的名称,例如 :param
然后在处理程序主体中,您相应地检查此查询参数和 return 正确的 return 值。例如:
get("/api/status/:param", (request, response) -> {
if (request.params(":param").equalsIgnoreCase("car")) {
return SOMETHING_TO_RETURN_CAR;
} else if (request.params(":param").equalsIgnoreCase("passenger")) {
return SOMETHING_TO_RETURN_PASSENGER;
}
});
我有一个 java 代码,它使用 SparkJava (http://sparkjava.com/) 为 http 端点提供服务。
端点是这样生成的:
get("/xxx/yyy", (request, response) -> {
...
return SOMETHING_TO_RETURN
});
使用这种方法我遇到了问题:
假设我定义了一个端点: '/api/status/car' ,
但用户有时会改为调用“/api/status/CAR”。所以问题是像这样定义的 url 区分大小写。
现在我必须以某种方式修复它:不区分大小写。 我看过过滤器(例如 'before'),但我相信我无法修改请求 url (toLowerCase)。
所以主要问题是:通过使用该方法定义端点,我如何将请求 url 修改为小写,或者说 sparkjava urls 应该是以不区分大小写的模式映射。
URL(域名部分除外)可能始终区分大小写。由服务器决定,因此用户永远不会知道。您可以在 W3.org.
中了解更多信息解决问题的一种方法是使用请求参数:
get("/api/status/:carParam", (request, response) -> {
if (request.params(":carParam").equalsIgnoreCase("car")) {
return SOMETHING_TO_RETURN;
}
});
如果除了 car
之外 /api/status/
下还有更多路由,那么您应该将 :carParam
重命名为更通用的名称,例如 :param
然后在处理程序主体中,您相应地检查此查询参数和 return 正确的 return 值。例如:
get("/api/status/:param", (request, response) -> {
if (request.params(":param").equalsIgnoreCase("car")) {
return SOMETHING_TO_RETURN_CAR;
} else if (request.params(":param").equalsIgnoreCase("passenger")) {
return SOMETHING_TO_RETURN_PASSENGER;
}
});