gpt4 book ai didi

spring - 路径变量 spring Restful 服务中的 URL

转载 作者:行者123 更新时间:2023-12-02 02:17:42 24 4
gpt4 key购买 nike

当我将电子邮件地址作为路径变量传递时,它会抛出以下错误

    Console --> 2015-02-09 16:30:06,634 WARN  - GET request for "http://localhost:8181/abc/users/testabghtmail@gmail.com" resulted in 406 (Not Acceptable); invoking error handler
Exception in thread "main" org.springframework.web.client.HttpClientErrorException: 406 Not Acceptable
at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:91)
at org.springframework.web.client.RestTemplate.handleResponseError(RestTemplate.java:607)
at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:565)
at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:521)
at org.springframework.web.client.RestTemplate.exchange(RestTemplate.java:439)
at RestClient.main(RestClient.java:35)

我尝试了很多案例,所以我终于发现最后一个域名的问题,例如 .com.org 这些都是国际化域名。因此,如果我传递“testabghtmail@gmail.dom”,而不是“testabghtmail@gmail.com”,它将完美地工作。

我的代码是

@RequestMapping(value = "users/{emailId:.*}", method = RequestMethod.GET)
public Object searchUser(@PathVariable("emailId") String emailId){
logger.info("Inside search user --> emailId " + emailId);
return userService.findUserByuserId(emailId);
}

最佳答案

我没有找到答案。我认为这是一个http规则,我们最终不能在参数中拥有域并且可以发出请求。

因此解决这个问题只需在网址末尾传递一个斜杠即可。

就像将“http://localhost:8181/abc/users/testabghtmail@gmail.com/”修改为“http://localhost:8181/abc/users/testabghtmail@gmail.com”。并且由于 Spring Rest 架构,它会自动省略最后一个斜杠,您将获得“testabghtmail@gmail.com”作为参数值。

如果你们发现其他东西,请告诉我。

关于spring - 路径变量 spring Restful 服务中的 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28408814/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com