0

我有 Spring HATEOAS 用于访问特定资源,例如

http://localhost:8080/user/1

但我也希望能够宣传服务网址:

http://localhost:8080/user

例如,如果您执行 GET / ,我想返回我宣传的服务资源。现在唯一的一个是/auth。

@RequestMapping(value = "/", method = RequestMethod.GET)
@ResponseBody
public HttpEntity<AuthenticationResource> post() {
    AuthenticationResource resource = new AuthenticationResource();
    resource.add(linkTo(methodOn(AuthenticationController.class).authenticate()).withSelfRel());
    return new ResponseEntity<AuthenticationResource>(resource, HttpStatus.OK);
}

@RequestMapping(value = "/auth", method = RequestMethod.POST, consumes = "application/json")
@ResponseBody
public void authenticate() {
    //users.save(user);
}

目前这没有编译,因为 linkTo 不接受 void 参数,我认为这是我的身份验证方法的返回类型

我想要的是:

{"links":[{"rel":"someString","href":"http://localhost/auth"}]}

在保持 HATEOAS 最佳实践的同时,我如何做到这一点?

4

1 回答 1

1

这个。

@RequestMapping(value = "/", method = RequestMethod.GET)
@ResponseBody
public HttpEntity<ResourceSupport> post() {
    ResourceSupport resource = new ResourceSupport();
    resource.add(linkTo(methodOn(AuthenticationController.class).authenticate()).withRel("authenticate"));
    return new ResponseEntity<ResourceSupport>(resource, HttpStatus.OK);
}

@RequestMapping(value = "/auth", method = RequestMethod.POST, consumes = "application/json")
@ResponseBody
public HttpEntity<AuthenticationResource> authenticate() {
    AuthenticationResourceAssembler assembler = new AuthenticationResourceAssembler();
    AuthenticationResource resource = assembler.toResource(new Authentication());

    return new ResponseEntity<AuthenticationResource>(resource, HttpStatus.OK);
}
于 2014-01-08T20:31:00.650 回答