Ресурсы 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]/
Другие вопросы по тегам