2014-03-24 49 views
6

我正在尝试生成搜索资源的链接。所以,我想创建,提供了一个链接到我的搜索资源:如何用Spring HATEOAS添加查询字符串参数?

POST /resourcesearch 
{param1: "value1",param2:"value2"} 

的反应应该是:

{"links":[ 
    { 
    "rel":"self", 
    "href":"http://localhost:8080/resourcesearch" 
    }, 
    { 
    "rel":"resources", 
    "href":"http://localhost:8080/resources?param1=value1&param2=value2" 
    } 
} 

这里是我的代码:

@Controller 
@RequestMapping("/resourcesearch") 
public class ResourceSearchController{ 
    @RequestMapping(method = RequestMethod.POST) 
    public ResponseEntity<ResourceSupport> createResourceSearch(@RequestBody ResourceDTO dto){ 
    ResourceSupport resource = new ResourceSupport(); 
    //... do something here to build query string based on "dto" 
    resource.add(linkTo(ResourceController.class).withRel("resources")); 
    return new ResponseEntity<ResourceSupport>(resource, HttpStatus.CREATED); 
    } 
} 
=========================================== 
@Controller 
@RequestMapping("/resources") 
public class ResourceController{ 
    @RequestMapping(method = RequestMethod.GET) 
    public ResponseEntity<CollectionDTO> listResources(@RequestParam("param1") String param1, @RequestParam("param2") String param2){ 
    ... 
    } 
} 

的东西是我不知道如何将查询字符串参数添加到该行中的url:

resource.add(linkTo(ResourceController.class).withRel("resources")); 

因为该行的结果是:

{ 
    "links" : [ 
    { 
     "rel":"resources", 
     "href":"http://localhost:8080/resources" 
    } 
    ] 
} 

任何想法?

回答

4

您在资源中使用的名称与期望的输出之间存在一些(潜在的)不匹配,因此我无法很好地进行映射。

无论如何,您需要使用ControllerLinkBuildermethodOnHere's一个很好的例子,应该让你去。

对于更复杂的例子,Spring HATEOAS的unit tests是很好的例子。

+0

在ResourceController类的@RequestMapping中存在拼写错误。我编辑的代码是一致的。 – Neuquino

相关问题