Контроллеры Rest для соглашений об объектах отношений - PullRequest
0 голосов
/ 10 октября 2018

У меня есть простое Java-приложение с тремя сущностями:

User
Rent
Tool

Пользователь может арендовать несколько инструментов, а инструмент может быть арендован несколькими пользователями.Сущность Rent существует для отслеживания истории аренды, поэтому она имеет много-к-одному отношения как с Пользователем, так и с Tool.

На данный момент у меня есть два контроллера покоя: UserController ToolController, которые отвечают за обслуживание пользователей или инструментов.

Проблема в том, что теперь я хочу вернуть историю аренды для конкретного пользователя.Должен ли я создать метод в UserController с отображением, например

/users/{id}/rents

, или лучше создать отдельный контроллер, например RentController, и метод с отображением, например

/rents?userId={userId}

Я думаю, что первый подход чище вусловия URI, но я должен использовать RentService в UserController и потому что это классы из разных пакетов (я использую пакетный подход), я чувствую, что что-то не так.Проблема также в таких методах, как POST или PUT, где я думаю, что лучшим вариантом будет что-то вроде этого:

POST /rents - RentDto as body
PUT /rents/{id} - RentDto as body

или, возможно, вполне нормально иметь метод:

GET /users/{id}/rents

в RentController, а не в UserController?Как вы решаете такие проблемы и что бы вы предложили?

Ответы [ 2 ]

0 голосов
/ 10 октября 2018

Когда мы говорим о RESTful API, мы должны быть в состоянии достичь любого метода CRUD без дополнительных параметров, поэтому, учитывая это, я бы использовал подход с параметром пути (/users/{id}/rents).

Обычно мы используемпараметры запроса в случае, если вы хотите получить список или элементы списка с очень конкретной информацией.

Я рекомендую эту статью для получения более подробной информации.

0 голосов
/ 10 октября 2018
/users/{id}/rents

На мой взгляд, это более понятно и легко понять, если вы используете вышеуказанный URL и просто возвращаете список арендных ставок пользователя.

/rents/{id}/user

Поможет отследить, какая арендная плата в настоящее время используетсякоторый.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...