在 PathParameter String 变量中出现斜线错误
Getting an error having a slash in PathParameter String variable
我有一个 Java Spring 引导应用程序,其中包含几个 API REST 端点。
我将其中一个端点用作搜索端点。
我的问题是使用包含斜杠“/”的路径变量调用此特定端点会给我一个 HTTP 400 错误请求。该程序根本看不到找到当前映射。
即如果搜索字符串是 foo/bar 那么下面的调用会给我一个 HTTP 状态 400 - Bad Request:
curl -X PUT "http://127.0.0.1:8080/search/foo%2Fbar" \
-H "accept: application/json;charset=UTF-8" \
-H "Content-Type: application/json" \
-d "{ \"someSettings\": \"some value\", \"startNumber\": 0}"
程序的这一部分是这样的。
@PutMapping(value = "/search/{searchString}",
consumes = MediaType.APPLICATION_JSON_UTF8_VALUE,
produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
public ResponseEntity<SearchResultModel> search(@PathVariable("searchString") String searchString, @RequestBody SearchSettingsModel searchSettings) {
return handler.doSearch(searchString, searchSettings);
}
当我有任何其他文本字符串时,搜索工作正常,如果可能,我更喜欢使用 PathVariable。是否可以在 PathVariable 中进行搜索,或者我是否必须将字符串放在 RequestBody 中?
我正在使用 Spring-Boot 应用程序和 Java 11 的 Maven 构建。
您的 url 中不能有 %2F (= /)。
将其添加到正文或作为查询参数。
我有一个 Java Spring 引导应用程序,其中包含几个 API REST 端点。
我将其中一个端点用作搜索端点。
我的问题是使用包含斜杠“/”的路径变量调用此特定端点会给我一个 HTTP 400 错误请求。该程序根本看不到找到当前映射。
即如果搜索字符串是 foo/bar 那么下面的调用会给我一个 HTTP 状态 400 - Bad Request:
curl -X PUT "http://127.0.0.1:8080/search/foo%2Fbar" \
-H "accept: application/json;charset=UTF-8" \
-H "Content-Type: application/json" \
-d "{ \"someSettings\": \"some value\", \"startNumber\": 0}"
程序的这一部分是这样的。
@PutMapping(value = "/search/{searchString}",
consumes = MediaType.APPLICATION_JSON_UTF8_VALUE,
produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
public ResponseEntity<SearchResultModel> search(@PathVariable("searchString") String searchString, @RequestBody SearchSettingsModel searchSettings) {
return handler.doSearch(searchString, searchSettings);
}
当我有任何其他文本字符串时,搜索工作正常,如果可能,我更喜欢使用 PathVariable。是否可以在 PathVariable 中进行搜索,或者我是否必须将字符串放在 RequestBody 中?
我正在使用 Spring-Boot 应用程序和 Java 11 的 Maven 构建。
您的 url 中不能有 %2F (= /)。
将其添加到正文或作为查询参数。