【发布时间】:2016-11-22 09:54:35
【问题描述】:
我们的 Spring Boot RestController 中有以下方法:
@RequestMapping(value = USER_LOGIN_URL, method = { RequestMethod.POST })
public ResponseEntity<TokenResponse> localAuth(
@Validated @RequestBody(required = true) AuthRequest authRequest,
@RequestParam(required = true) String provider) {
// ... voodoo magic ...
return ResponseEntity.status(HttpStatus.OK).body(new TokenResponse("abc"));
}
我们想使用不同的请求模型(这里@RequestBody 包含一个自定义的AuthRequest 对象),具体取决于在我们的例子中名为provider 的@RequestParam 的值。 Spring MVC 有 option to forward requests 不幸的是这不适用于 @RestController :(
有什么想法吗?
编辑 - 也许这能更好地展示我们想要实现的目标:
if (provider.equals("providerA")) {
@Validated @RequestBody(required = true) AuthRequest authRequest
} else {
@Validated @RequestBody(required = true) SomeSpecialAuthRequest authRequest
}
【问题讨论】:
-
“我们想使用不同的请求模型”请详细说明。
-
我自己发现的。答案贴在下面。
标签: spring spring-mvc spring-boot