【问题标题】:Getting an error having a slash in PathParameter String variable在 PathParameter String 变量中出现带有斜杠的错误
【发布时间】:2020-03-27 04:52:37
【问题描述】:

我有一个带有几个 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 应用程序。

【问题讨论】:

标签: java spring-boot java-11 spring-boot-2


【解决方案1】:

您的网址中不能有 %2F (= /)。

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

【讨论】:

    猜你喜欢
    • 2012-03-21
    • 2014-03-03
    • 2011-06-27
    • 2017-11-29
    • 2017-03-24
    • 2016-01-22
    • 2015-11-08
    • 2017-10-01
    相关资源
    最近更新 更多