我有一个带有两个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(= /)。

将此添加到正文或作为查询参数。

10-08 07:05