【问题标题】:Multiple request mapping on controller Spring Hateos控制器 Spring Hateoas 上的多个请求映射
【发布时间】: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?

【问题讨论】:

标签: spring rest spring-mvc hateoas request-mapping


【解决方案1】:

org.springframework.hateoas.mvc.ControllerLinkBuilder 类有一组方法,您可以使用这些方法来构建类似的链接

import static org.springframework.hateoas.mvc.ControllerLinkBuilder.linkTo;
import static org.springframework.hateoas.mvc.ControllerLinkBuilder.methodOn;

resource.add(linkTo(AuthorController.class).slash(author.getAuthorId()).slash("books").withRel("vaquar"));

// or by pointing directly to a controller method
resource.add(linkTo(methodOn(UserController.class).getUsers(author.getUserId())).withRel("vaquar"));

您可以阅读here

工作示例:https://github.com/corsoft/spring-hateoas-demo

【讨论】:

    猜你喜欢
    • 2012-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多