我有一个带有两个API REST端点的Java Spring Boot应用程序。
在我的一个端点中,我正在用作搜索端点。
我的问题是使用路径变量(其中包含斜杠“ /”)调用此特定终结点,它将给我一个HTTP 400错误请求。该程序根本看不到当前映射。
即,如果搜索字符串为foo / bar,则以下调用为我提供了HTTP状态400-错误的请求:
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中?
我正在使用带有Java 11 Maven构建的Spring-Boot应用程序。
最佳答案
您的网址中不能有%2F(= /)。
将此添加到正文或作为查询参数。