【发布时间】:2017-07-24 17:19:05
【问题描述】:
虽然在 Spring MVC 中 @requestmapping(value={"url1","url2"}) 是允许的,但 Spring HATEOS 在创建链接时会选择第一个映射。是否有控制器上的请求映射版本与http请求版本调用匹配的解决方案。
假设url1 和url2 有不同的版本并放在同一个控制器上。
控制器在内部为另一个控制器创建链接。对于这两个 url,它使用来自控制器的第一个请求映射。但我希望它应该根据 url 调用。对于url1,它应该使用版本1,对于url2,它应该使用版本2。
第一个控制器
@RestController
@RequestMapping("url/v1","ur1/v2")
public class MyFirstController{
public Response<Entity> method1(){
return ResponseEntity<AnotherResponseType>(
new AnotherResponseType(argument1, argument2), HttpStatus.OK);
}
}
第二控制器
@RestController
@RequestMapping("url/v1","ur1/v2")
public class MySecondController{
public Response<ResponseType> method1(){
return ResponseEntity<ResponseType>(
new ResponseType(argument1, argument2), HttpStatus.OK);
}}
ResponseType 使用 Spring HATEOS 创建链接。在调用版本 v2 的情况下,此响应始终在创建的链接中包含版本 v1 而不是版本 v2。
响应类型
class ResponseType{
public Response Type(String argument1, String argument2){
this.add(inkTo(methodOn(MyFirstController.class).method1(argument1,
null).withRel("link1"));
}
}
我想要的是让为 v2 创建的链接应该包含 v2 而不是 v1?
【问题讨论】:
-
请阅读Under what circumstances may I add “urgent” or other similar phrases to my question, in order to obtain faster answers? - 总结是这不是解决志愿者的理想方式,并且可能会适得其反。请不要将此添加到您的问题中。
-
你能添加代码和例子吗,你的问题很混乱。
-
@vaquarkhan 示例代码已添加。 LMK(如果需要任何其他信息)。
标签: spring rest spring-mvc hateoas request-mapping