Примечание. Я считаю, что здесь POST
означает "создать", а PUT
означает "обновить", как это делает GitHub. Здесь не место для аргументов в пользу POST
или PUT
.
У меня есть ресурс company
и действие assign
. Мне интересно, как перевести это поведение в мой REST API.
Я подумал о чем-то вроде:
PUT /company/:id/assign
user_id: 5
Что если я хочу отменить назначение этого пользователя?
- Должен ли я использовать логическое значение в качестве параметра?
- Должен ли я использовать действие
unassign
? - Должен ли я использовать другой HTTP-глагол?
В последней версии GitHub API я увидел, как пометить суть:
PUT /gists/:id/star
Почему бы и нет, но как удалить суть:
DELETE /gists/:id/star
Мне это кажется довольно странным. Вы обновляете действие над ресурсом и удаляете его. Странный. Я мог понять, стоит ли POST
вместо PUT
.
POST /gists/:id/star
и DELETE /gists/:id/star
мне кажутся более логичными. Что вы думаете?
РЕДАКТИРОВАТЬ: Я буду работать с POST
и DELETE
. Но поскольку отправить данные с помощью метода DELETE
невозможно, я должен передать user_id
в URL:
POST /company/:id/assign/:user_id
DELETE /company/:id/assign/:user_id
1 ответ
Использование логического значения не совсем понятно. Я мог бы рассматривать это как неочевидный аргумент. Учтите, что чем более очевидна интерпретация API, тем лучше ваш синтаксис.
Наконец, лучший вариант, который вы можете выбрать, - это использование метода DELETE. Когда вы назначаете пользователя компании, вы создаете связь. Когда вы хотите отменить назначение, вы удаляете отношение.
Похожие вопросы
Новые вопросы
rest
REST (Transfer State Transfer) - это стиль архитектуры программного обеспечения для распределенных гипермедиа систем, таких как World Wide Web. Его популярность возросла по сравнению с архитектурами RPC, такими как SOAP, из-за внутренней разобщенности клиента с сервером, возникающей из-за наличия единого интерфейса между гетерогенными системами.
POST /assignments {user: id, company: id} -> 201 id
и все. Назначить - это имя операции, а не имя ресурса ...