次のような特定のリソースにアクセスするためにSpring HATEOASが機能しています
http://localhost:8080/user/1
しかし、サービスの URL をアドバタイズできるようにしたい:
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 のベスト プラクティスの範囲内でこれを達成するにはどうすればよいですか?