Ресурсы API REST
Создаю свой первый REST API и у меня есть вопрос. У меня есть ресурсное место:
/venues
У каждого места есть гости:
/venues/1/guests
Вот где я запутался. Если я хочу обновить гостевой ресурс, лучше сделать это:
POST /venue/1/guests/1/
или же
POST /guests/1
Второй вариант короче, и поскольку идентификаторы гостей уникальны, второй работает просто отлично. Но сначала это более явно.
Так что я застрял на том, какой маршрут взять отсюда.
Спасибо
2 ответа
Оба являются в значительной степени правильными подходами, хотя, если вы гарантируете клиентам (разработчикам клиентов), что гостевые идентификаторы всегда будут уникальными независимо от места, которое они посещают, я пойду с
POST /guests/{guestId}
Я обычно буду использовать это:
POST /venues/{venueId}/guests/{guestId}
когда я должен изменить статус этого гостя для данного места. Например, гость Джон Доу с идентификатором 1 имеет RSVP-значение "да" для места с venueId 1, тогда я отправлю данные на следующий URL-адрес (это всего лишь пример, где предполагается, что единственное, что вы можете добавить / обновление для данного гостя для данного места является данными RSVP):
POST /venues/1/guests/1
request body: {"RSVP", true}
но если я захочу обновить имя Джона Доу до Джона Фу, я, вероятно, сделаю
PUT /guests/1
request body: {"firstName":"John","lastName":"Foo"}
Надеюсь, это поможет!
Вы можете думать, что у вас есть два ресурса RESTful для управления
- А) Места и
- Б) Гости
Этими ресурсами можно управлять независимо, используя POST/GET/DELETE/PUT (операции CRUD)
POST /venues/
GET /venues/
POST /guests/
GET /guests/
Также вы можете использовать CRUD для отображения одного ресурса на другой, как
POST /venues/[venue-id]/guests/[guest-id]/