gpt4 book ai didi

spring-mvc - Spring Boot 2.0.0.M4 和电子邮件地址作为@PathVariable 给出 HTTP 500 错误

转载 作者:行者123 更新时间:2023-11-28 21:55:40 25 4
gpt4 key购买 nike

我正在尝试从 Spring Boot 1.5.7 迁移到 2.0.0.M4

这是我的休息 Controller :

@RestController
@RequestMapping("/v1.0/users")
public class UsersController {

@Autowired
private UserService userService;


@RequestMapping(value = "/validate-username/{username}", method = RequestMethod.GET)
@ResponseStatus(value = HttpStatus.OK)
public void validateUsername(@PathVariable String username) {
throw new EntityAlreadyExistsException();
}

...

}

这是异常处理器:

@ControllerAdvice
public class GlobalControllerExceptionHandler {

@ExceptionHandler
@ResponseBody
@ResponseStatus(HttpStatus.CONFLICT)
public Map<String, ResponseError> handleEntityAlreadyExistsException(EntityAlreadyExistsException e, HttpServletRequest request, HttpServletResponse response) throws IOException {
logger.debug("API error", e);
return createResponseError(HttpStatus.CONFLICT.value(), e.getMessage());
}

}

如果使用以下用户名,例如:alex 一切正常,我收到 409 状态代码和 application/json; charset=UTF-8 作为内容类型,但在以下用户名的情况下,例如 alex@test.com 我的端点返回 500 状态代码和非 JSON 内容类型,像这样:

enter image description here

当用户名 PathVariable 末尾包含 .com 时,我可以重现此问题。

我使用嵌入式 Tomcat 作为应用服务器。 Woth Spring Boot 1.5.7 相同的功能运行良好。如何让它与 Spring Boot 2.0.0.M4 一起工作?

附言

我知道将电子邮件地址作为 URL 参数发送是一种不好的做法。我只是对这种特殊情况感兴趣。

最佳答案

试试这个 friend ,{username:.+} 而不是你的 {username}

编辑:我发现 @ 是 URL 的保留字符,不应在 URL 中使用。您需要对 URL 进行编码。

类似于:alex@test.com -> alex%40test.com

来源:Another stackoverflow question

关于spring-mvc - Spring Boot 2.0.0.M4 和电子邮件地址作为@PathVariable 给出 HTTP 500 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46605965/

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