私はHATEOASとGradleでSpring Boot 2.2.0.M1を使用しています。
implementation 'org.springframework.boot:spring-boot-starter-hateoas'
現在、Resource
はIDE(IntelliJ IDEA 2018.3))によって検出されず、ControllerLinkBuilder
はdeprecated。
package com.example.restfulwebservicegradle.user;
import static org.springframework.hateoas.server.mvc.ControllerLinkBuilder.linkTo;
import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.methodOn;
import com.example.restfulwebservicegradle.User;
import com.example.restfulwebservicegradle.UserDaoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.hateoas.server.mvc.ControllerLinkBuilder;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.support.ServletUriComponentsBuilder;
import javax.validation.Valid;
import Java.net.URI;
import Java.util.List;
@RestController
public class UserResource {
@Autowired
private UserDaoService service;
@GetMapping("users/{id}")
public Resource<User> retrieveUser(@PathVariable int id) {
User user = service.findOne(id);
if (user == null)
throw new UserNotFoundException("id-" + id);
// Resource not found
Resource<User> resource = new Resource<User>(user);
// Deprecated
ControllerLinkBuilder linkTo = linkTo(methodOn(this.getClass()).retrieveAllUsers());
resource.add(linkTo.withRel("all-users"));
return resource;
}
}
どうすればこれを解決できますか?
私の目標は、HATEOASからResource
を見つけ、ControllerLinkBuilder
の代わりを使用することです。
パッケージ構造の最大の変更は、Spring HATEOASで追加のメディアタイプをサポートするためのハイパーメディアタイプ登録APIの導入によってもたらされました。
https://docs.spring.io/spring-hateoas/docs/current/reference/html/