Alexion
@Alexion

Best practice для relationships в REST API?

Пересмотрел огромное количество примеров, но не нашел единого подхода к передаче связей в REST API.
Как лучше организовать передачу и прием ссылок?
К примеру, как лучше {"categoryId": 1} или {"category": {"id": 1}}?
Многие сервисы принимают POST в одном формате, а при GET отдают в другом, например при создании передается categoryId, а при выдаче уже возвращается развернутая category: {}. Я думаю это вообще неудобно, так как форма должен быть единым.

Наилучшее решение нашел в JSON:API, но, как мне кажется, он избыточен, и пока там нет четкого понимания по транзакциям.
В примере от Swagger под названием PetStore тоже все вразнобой.

Кто как решает эти проблемы?
  • Вопрос задан
  • 98 просмотров
Пригласить эксперта
Ответы на вопрос 3
Пересмотрел огромное количество примеров, но не нашел единого подхода к передаче связей в REST API.
Это потому, что его нет.

К примеру, как лучше {"categoryId": 1} или {"category": {"id": 1}}?
Как вам нравится, так и лучше.

Я думаю это вообще неудобно, так как форма должен быть единым.
Тогда не делайте так, вас никто не заставляет.

Кто как решает эти проблемы?
Вы забыли проблемы указать. В вопросе кроме "мне вот так не нравится" ничего нет.
Ответ написан
Комментировать
angrySCV
@angrySCV
machine learning, programming, startuping
правил нет, есть лишь общие соображения по созданию удобного апи
примеры уверен вырваны из контекста, оба примера плохие.

Первый пример ориентируется на упрощение НО тогда если у тебя существует только ОДНО поле для категории (айди), тогда ты просто пишешь -> {"category": 1} (без айди в имени)
тоесть если и упрощать, так все упрощать, включая названия.
Но скорее всего у категории существует не только идентификатор но также еще и название, что не упростить в одном поле, значит все равно нужно выводить как во втором варианте обьект category, с двумя полями id, и name
просто же выводить обьект с одним вложенным полем - это ненужная избыточность, такое лучше заменить на первый вариант.
-------
по поводу: POST в одном формате, а при GET отдают в другом.
за такое просто в морду бить надо, тк это подразумевает разработчику необходимость создания 2х разных представлений для структур данных одного и тогоже обьекта.
Ответ написан
Комментировать
inoise
@inoise
Solution Architect, AWS Certified, Serverless
Есть HAL + HATEOAS
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы