@ScRsa
Delphi/Oracle Изучаю JAVA

Как десериализовать объект полученный от Spring Data Rest сервиса?

Spring Data Rest отдает HATEOAS JSON, соответственно ссылки на внутренние объекты передаются линками:

public class Filial {
    private long id;
    private String name;
}

public class User {
    private long id;
    private String name;
    @JoinColumn(...)
    private Filial filial;
}


{
  "_embedded": {
    "users": [
      {
        "id": 1,
        "name": "test1",        
        "_links": {
          "self": {
            "href": "http://localhost/users/1"
          }
          "filial": {
            "href": "http://localhost/users/1/filial"
          }
        }
      }
    ]
  }
  "_links": { ... },
  "page": { ... }
}


вопрос как на фронтенде полноценно собрать userа?
использую FeignClient
@FeignClient(url = "http://localhost/", name = "user-client")
public interface UserClient {
    @RequestMapping(method = GET, value = "/users")
    Resources<User> getAll();
}

на выходе получаю список пользователей, но filial=null...
filialId также нигде не передается, получается ссылка на филиал только в линке
  • Вопрос задан
  • 222 просмотра
Решения вопроса 1
@ScRsa Автор вопроса
Delphi/Oracle Изучаю JAVA
В доках написано использовать @Projection. Только почему то работает оно только при явно указании excerptProjection у репозитория
docs.spring.io/spring-data/rest/docs/current/refer...
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
jaxtr
@jaxtr
JavaEE/Spring-разработчик
Дык, в этом и есть смысл REST/HATEOAS - ты не получаешь связанный объект, а только ссылку на него. Т.е. после получения пользователя тебе нужно по ссылке из _links.filial получить филиал.
Если такой подход не устраивает, то можно реализовать собственное поведение REST-сервиса.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы