S
S
ScRsa2016-06-30 07:22:33
Java
ScRsa, 2016-06-30 07:22:33

How to deserialize an object received from a Spring Data Rest service?

Spring Data Rest returns HATEOAS JSON, respectively, references to internal objects are passed by links:

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": { ... }
}

the question is how to fully collect a user on the frontend?
using FeignClient
@FeignClient(url = "http://localhost/", name = "user-client")
public interface UserClient {
    @RequestMapping(method = GET, value = "/users")
    Resources<User> getAll();
}

at the output I get a list of users, but filial=null...
filialId is also not passed anywhere, a link to the branch is obtained only in the link

Answer the question

In order to leave comments, you need to log in

2 answer(s)
S
ScRsa, 2016-06-30
@ScRsa

The docs say to use @Projection. But for some reason it only works if excerptProjection is explicitly specified in the
docs.spring.io/spring-data/rest/docs/current/refer...

A
Alexander Kosarev, 2016-06-30
@jaxtr

So, that's the point of REST/HATEOAS - you don't get the associated object, just a link to it. Those. after receiving the user, you need to get a branch using the link from _links.filial.
If this approach does not suit you, then you can implement your own behavior of the REST service.

Similar questions
K
KhanTengri2011-06-17 23:56:41
Get from a remote web page?</a> <a class="content__item-button" href="/q/get-title-from-a-remote-web-page"> <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" class=""> <path fill-rule="evenodd" d="M15 14a1.002 1.002 0 01-1.703.71h-.004l-.003-.01-1.704-1.7H3c-1.104 0-2-.9-2-2V3c0-1.1.896-2 2-2h10c1.104 0 2 .9 2 2v11zM5 6c.552 0 1 .45 1 1s-.448 1-1 1-1-.45-1-1 .448-1 1-1zm3 0c.552 0 1 .45 1 1s-.448 1-1 1-1-.45-1-1 .448-1 1-1zm3 0c.552 0 1 .45 1 1s-.448 1-1 1-1-.45-1-1 .448-1 1-1z"></path> </svg> <span class="dark">6</span><span class="dn">Reply</span> </a> </div> </div><div class="content__item"> <div class="content__item-img name-color-D"> <span>D</span></div> <div class="content__item-content"> <div class="content__item-row"> <a href="/q/how-to-connect-2-computers-on-different-networks-using-sockets">Daniel</a><span>2018-02-17 06:39:43</span></div> <a class="content__item-title similar" href="/q/how-to-connect-2-computers-on-different-networks-using-sockets">How to connect 2 computers on different networks using sockets.?</a> <a class="content__item-button" href="/q/how-to-connect-2-computers-on-different-networks-using-sockets"> <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" class=""> <path fill-rule="evenodd" d="M15 14a1.002 1.002 0 01-1.703.71h-.004l-.003-.01-1.704-1.7H3c-1.104 0-2-.9-2-2V3c0-1.1.896-2 2-2h10c1.104 0 2 .9 2 2v11zM5 6c.552 0 1 .45 1 1s-.448 1-1 1-1-.45-1-1 .448-1 1-1zm3 0c.552 0 1 .45 1 1s-.448 1-1 1-1-.45-1-1 .448-1 1-1zm3 0c.552 0 1 .45 1 1s-.448 1-1 1-1-.45-1-1 .448-1 1-1z"></path> </svg> <span class="dark">2</span><span class="dn">Reply</span> </a> </div> </div><div class="content__item"> <div class="content__item-img name-color-Y"> <span>Y</span></div> <div class="content__item-content"> <div class="content__item-row"> <a href="/q/interview-questions-for-self-preparation">YoungSkipper</a><span>2011-06-19 21:30:05</span></div> <a class="content__item-title similar" href="/q/interview-questions-for-self-preparation">Interview questions for self-preparation</a> <a class="content__item-button" href="/q/interview-questions-for-self-preparation"> <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" class=""> <path fill-rule="evenodd" d="M15 14a1.002 1.002 0 01-1.703.71h-.004l-.003-.01-1.704-1.7H3c-1.104 0-2-.9-2-2V3c0-1.1.896-2 2-2h10c1.104 0 2 .9 2 2v11zM5 6c.552 0 1 .45 1 1s-.448 1-1 1-1-.45-1-1 .448-1 1-1zm3 0c.552 0 1 .45 1 1s-.448 1-1 1-1-.45-1-1 .448-1 1-1zm3 0c.552 0 1 .45 1 1s-.448 1-1 1-1-.45-1-1 .448-1 1-1z"></path> </svg> <span class="dark">11</span><span class="dn">Reply</span> </a> </div> </div><div class="content__item"> <div class="content__item-img name-color-L"> <span>L</span></div> <div class="content__item-content"> <div class="content__item-row"> <a href="/q/why-does-this-error-occur-and-how-to-add-beans-to-the-project">LinuxGod</a><span>2020-04-24 18:37:09</span></div> <a class="content__item-title similar" href="/q/why-does-this-error-occur-and-how-to-add-beans-to-the-project">Why does this error occur and how to add beans to the project?</a> <a class="content__item-button" href="/q/why-does-this-error-occur-and-how-to-add-beans-to-the-project"> <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" class=""> <path fill-rule="evenodd" d="M15 14a1.002 1.002 0 01-1.703.71h-.004l-.003-.01-1.704-1.7H3c-1.104 0-2-.9-2-2V3c0-1.1.896-2 2-2h10c1.104 0 2 .9 2 2v11zM5 6c.552 0 1 .45 1 1s-.448 1-1 1-1-.45-1-1 .448-1 1-1zm3 0c.552 0 1 .45 1 1s-.448 1-1 1-1-.45-1-1 .448-1 1-1zm3 0c.552 0 1 .45 1 1s-.448 1-1 1-1-.45-1-1 .448-1 1-1z"></path> </svg> <span class="dark">0</span><span class="dn">Reply</span> </a> </div> </div><div class="content__item"> <div class="content__item-img name-color-N"> <span>N</span></div> <div class="content__item-content"> <div class="content__item-row"> <a href="/q/what-language-are-android-programs-written-in">Nikita Kolosov</a><span>2011-06-24 17:09:36</span></div> <a class="content__item-title similar" href="/q/what-language-are-android-programs-written-in">What language are Android programs written in?</a> <a class="content__item-button" href="/q/what-language-are-android-programs-written-in"> <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" class=""> <path fill-rule="evenodd" d="M15 14a1.002 1.002 0 01-1.703.71h-.004l-.003-.01-1.704-1.7H3c-1.104 0-2-.9-2-2V3c0-1.1.896-2 2-2h10c1.104 0 2 .9 2 2v11zM5 6c.552 0 1 .45 1 1s-.448 1-1 1-1-.45-1-1 .448-1 1-1zm3 0c.552 0 1 .45 1 1s-.448 1-1 1-1-.45-1-1 .448-1 1-1zm3 0c.552 0 1 .45 1 1s-.448 1-1 1-1-.45-1-1 .448-1 1-1z"></path> </svg> <span class="dark">6</span><span class="dn">Reply</span> </a> </div> </div> </div> </div> </div> <div class="content find"> <p class="find__p">Didn't find what you were looking for?</p><a class="find__btn" href="#!">Ask your question</a> </div> <div class="find sm"> <p class="find__title">Ask a Question </p> <form class="find__form" action="#!"> <input class="find__input" type="text" placeholder="Ask your question here"> <button class="find__btn" type="submit"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 16 16" class="nBqR1"><path fill-rule="evenodd" d="M12.696 7.256L9.657 4.217a1 1 0 00-1.415 1.414l1.344 1.344H3.949a1.001 1.001 0 000 2h5.637l-1.344 1.343a1.002 1.002 0 000 1.415c.391.39 1.024.39 1.415 0l3.039-3.04A.993.993 0 0013 7.975a.997.997 0 00-.293-.708l-.011-.011z"></path></svg></button> </form> <p class="find__span">731 491 924 answers to any question</p> </div> </div> <aside class="banners"> <p>banners </p> </aside> </div> </main> </div> <script src="/assets/theme/js/highlight/highlight.min.js"></script> <script src="/assets/theme/js/app.min.js?_v=20220404145216"> </script> <script>hljs.highlightAll();</script> </body> </html>