Соглашение об именовании RESTful API - PullRequest
0 голосов
/ 27 июня 2018

У меня есть две коллекции: персоны и домашние животные . У человека может быть столько домашних животных, сколько они захотят.

Персональный документ:

person {
  id: person-id
  data: person-info
}

Документ для домашних животных:

pet {
  id: pet-id
  data: pet-info
  personId: person-id
}

Это мой дизайн именования API

  • ПОЛУЧИТЬ всех домашних животных от человека: / api / pets /: personId
  • ПОЛУЧИТЬ всех домашних животных с условием: / api / pets /: personId? Age_greater_than = 4
  • POST создать нового питомца: / api / pets с телом запроса, содержащим идентификатор человека
  • PUT обновить информацию о питомце: / api / pets /: petId с телом запроса, содержащим идентификатор человека и обновленную информацию
  • УДАЛИТЬ удалить питомца: / api / pets /: personId с телом запроса, содержащим идентификаторы питомца

Что-то не так с моим соглашением об именах API, и как это можно улучшить? Я думаю, что передача идентификатора человека непосредственно в / api / pets довольно странная.

1 Ответ

0 голосов
/ 27 июня 2018

Соглашения об именах можно найти здесь: https://restfulapi.net/resource-naming/

Пожалуйста, проверьте еще раз методы HTTP и REST. Основная концепция заключается в том, что URL-адреса представляют ресурсы, а методы HTTP, которые вы применяете к этим URL-адресам, указывают, что вы хотите делать с этими ресурсами.

GET - Читать ресурс (ы) PUT / POST - Создать ресурс (ы) PATCH - Обновить ресурс (ы) DELTE - Удалить ресурс (ы)

Так что, возможно, вы могли бы использовать PATCH вместо PUT для обновления ресурсов, если вы изменили только часть атрибутов ресурса.

Также в примере DELETE вы должны использовать идентификатор питомца в качестве переменной пути, а не идентификатор человека.

Для получения всех домашних животных от человека, я думаю, что / api / person / id / pets может быть более простым, чем / api / pets / personid, потому что когда вы видите URL / api / pets / 23, вы не знаете, это домашнее животное 23 или все домашние животные человека с идентификатором 23.

Подумайте снова о лучших практиках (просто используйте поисковую систему по вашему выбору);)

...