jsdevel
@jsdevel
Java разработчик. Хороший парень, наверное.

Как оптимизировать ответ сервера (Spring boot 2 API) в формате JSON?

Всем привет. Спасибо за минутку.
Нужно вернуть с сервера выборку по данным с разных таблиц. И склеить каким-то образом в единую цельную сущность. Пример на квестах:
Существуют квесты в них команды и участники. Как мне вернуть новую сущность (НЕ квестов, НЕ команд, НЕ участников). У меня существует квест (entity) такого вида:
{
        "id": 1,
        "name": "quest1",
        "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum ornare pretium tortor, et convallis nibh condimentum et. Vivamus nec aliquet nulla, consectetur commodo tortor. Mauris purus odio, imperdiet a sollicitudin sed, ornare id lorem. Mauris bibendum, orci eu aliquam ullamcorper, erat tortor interdum libero, et porttitor lectus dui vitae risus. Fusce lacinia metus et metus ornare, non faucibus metus dapibus. Proin venenatis, augue nec feugiat tincidunt, dolor orci ultrices lorem, eget accumsan sapien ex bibendum ante. Integer bibendum velit sit amet nibh maximus, sed laoreet sapien tincidunt. Nullam tristique erat sit amet augue ultricies blandit. Nunc augue lectus, fringilla sed lobortis vitae, faucibus non magna.\n            Etiam sed luctus ante, vitae porttitor orci. Integer at risus maximus, porttitor justo quis, viverra nunc. In quis arcu dolor. Etiam accumsan tellus sit amet odio dictum luctus. Donec at finibus diam. Phasellus auctor ante ut dolor eleifend, nec iaculis felis volutpat. Duis vestibulum, risus.",
        "stages": [
            {
                "id": 1,
                "name": "stage1",
                "task": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam malesuada, dolor quis euismod scelerisque, lacus.",
                "points": 10,
                "dataTimeStart": "2018-05-29T00:58:24.602+0000",
                "usersStages": [
                    {
                        "id": 2,
                        "dataTimeEnd": "2018-05-29T00:58:24.602+0000"
                    }
                ]
            },
            {
                "id": 2,
                "name": "stage2",
                "task": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque ac maximus nisl. Fusce sem libero, laoreet a congue vel, sollicitudin.",
                "points": 15,
                "dataTimeStart": "2018-05-29T00:58:24.602+0000",
                "usersStages": [
                    {
                        "id": 1,
                        "dataTimeEnd": "2018-05-29T00:58:24.602+0000"
                    }
                ]
            },
            {
                "id": 3,
                "name": "stage3",
                "task": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam fermentum lorem quis enim tempus, vel gravida erat.",
                "points": 10,
                "dataTimeStart": "2018-05-29T00:58:24.602+0000",
                "usersStages": []
            }
        ],
        "teams": [
            {
                "id": 1,
                "name": "team1"
            },
            {
                "id": 2,
                "name": "team2"
            },
            {
                "id": 3,
                "name": "team3"
            },
            {
                "id": 4,
                "name": "team4"
            }
        ]
    },

А нужны на странице данные в таком формате:
[
        "id" : 1,
        "name" : "quest1",
        "countTeams" : 3,
        "countStages" : 4,
        "check" : 1
]


Только самому билдить такой ответ с помощью hashmap?
Как правильно строить тогда @RestController api?
  • Вопрос задан
  • 194 просмотра
Пригласить эксперта
Ответы на вопрос 2
al_gon
@al_gon
class Response{
       private Integer id;
       private String quest1;,
       private Integer countTeams; 
       private Integer countStages;
       private Integer  check;
}


А почему не так?
Ответ написан
leahch
@leahch
3D специалист. Dолго, Dорого, Dерьмово.
В вашем случае наверное подошел бы GraphQL - вот вводная статья https://habr.com/post/326986/
А вот имлементация на java - https://github.com/graphql-java/graphql-java
А вот статья для spring - www.baeldung.com/spring-graphql
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
25 апр. 2024, в 09:29
2500 руб./за проект
25 апр. 2024, в 09:27
4000 руб./за проект
25 апр. 2024, в 09:20
10000 руб./за проект