【问题标题】:Spring MVC Endpoint not fetch while pass empty map {} into GET Request将空映射 {} 传递给 GET 请求时未获取 Spring MVC 端点
【发布时间】:2017-04-19 12:53:31
【问题描述】:

解决端点获取问题

下面是我调用api获取响应的情况。

http://localhost:28080/restServices/apps/1762/users/USERNAME/?password=PASSWORD

但是,当我设置以下数据时,它不起作用任何机构都可以帮助我解决这个问题。

http://localhost:28080/restServices/apps/1762/users/USERNAME/?password=PASSWORD&data={}

@RequestMapping(value = "/apps/{appId_}/users/{username_}", method = RequestMethod.GET)
@ResponseBody
@Transactional
public UserResponseDTO getUserAndToken(@PathVariable Long appId_, @PathVariable String username_, @RequestParam("password") String password_, @RequestParam("data") String datas) throws Exception {
//do stuff
}

编辑

任何编辑都会出现这个问题,它适用于 Tomcat 版本 7.0.63 而另一个版本 7.0.73, 8.0.x + 不起作用。

【问题讨论】:

    标签: java spring hibernate spring-mvc endpoint


    【解决方案1】:

    您忘记在 value = "/apps/users/{username_}" 中指定 {appId_}

    修复:value = "/apps/{appId_}/users/{username_}"

    ~~~

    您的方法接受@RequestParam("data") String datas 你正在发送data={} 字符串应该被引用所以修复是data=""

    【讨论】:

    • 已经进入我添加的代码,但在这里错误地删除了。但仍然无法正常工作
    • 尝试修复“数据”字符串。
    • 所以我需要设置类似 wise` , @RequestParam("data") String data)` 的东西。 @sovas 我按照你说的设置但还是不行。
    • 它正在处理成字符串,但想将空映射传递给 GET 请求。请您尝试查看我的请求。
    • 那么你想要String数据还是Map数据?
    【解决方案2】:

    这种行为影响Tomcat的重大更新。

    为了快速修复,您可以降级到旧版本之一,我使用7.0.63 降级了tomcat。

    在对Spring MVC 进行更多研发后,在下面列出的请求中添加无效字符列表时拒绝请求。

    URI 语法中不允许使用的排除 US-ASCII 字符:

       control     = <US-ASCII coded characters 00-1F and 7F hexadecimal>
       space       = <US-ASCII coded character 20 hexadecimal>
       delims      = "<" | ">" | "#" | "%" | <">
    

    不明智的字符列表是允许的,但可能会导致问题:

    unwise      = "{" | "}" | "|" | "\" | "^" | "[" | "]" | "`"
    

    以下字符在查询组件中保留,在 URI/URL 中具有特殊含义:

      reserved    = ";" | "/" | "?" | ":" | "@" | "&" | "=" | "+" | "$" | ","
    

    For more information visit.

    解决方案:

    encodeURI("http://localhost:28080/restServices/apps/1762/users/USERNAME/?password=PASSWORD&data={}")
    > http://localhost:28080/restServices/apps/1762/users/USERNAME/?password=PASSWORD&data=%7B%7D
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-20
      • 2013-08-17
      • 2013-04-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多