基于spring MVC我有一个像http://127.0.0.1:9000/users/{username}
这样的休息时间。
如果我将x@y.com
或x@y.a
分配给{username}
,则效果很好。
但是,如果我将x@y.z
分配给{username}
,则客户端会收到406 Not Acceptable
错误,可以收到请求,服务端也不会发生错误。
这意味着:
http://127.0.0.1:9000/users/x@y.a
好
http://127.0.0.1:9000/users/x@y.com
好
http://127.0.0.1:9000/users/x@y.z
错误(406在客户端不可接受)
任何人都可以帮忙解释为什么x@y.a
和x@y.com
可以正常工作但x@y.z
无法解决?
感谢。
请找到如下控制器。
@RequestMapping("/users/{login}")
public UserProfile getUserProfile(@PathVariable("login") String login) {
log.info(String.format("Get user profile by login %s", login));
UserProfile userProfile = userProfileRepo.getUserProfile(login);
if (userProfile == null) {
log.info(String.format("User profile is null for user %s", login));
userProfile = new UserProfile();
userProfile.setLogin(login);
userProfileRepo.save(userProfile);
return new UserProfile();
}
return userProfile;
}
一个有用的发现,唯一的日志显示x@y.z
被截断为x@y
:
User profile is null for user x@y
同时,如果我将路径变量从@PathVariable移动到@RequestParam,它就可以工作。
因此,当将{PathVariable {username}分配给x@y.z
时,只能分配x@y
,谁知道原因?