Какой код состояния HTTP использовать в REST API, если ресурс не существует при размещении подресурса? - PullRequest
0 голосов
/ 09 июня 2018

Чтобы создать документ для проекта в REST API,

POST /projects/1234/documents

Какой статус ожидается вернуть, если проект с id = 1234 не существует?


Относится к этому вопросу , но касается POST, а не GET.

1 Ответ

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

Краткий ответ: для большинства случаев использования, аналогичных описанным вами, 404.

Если говорить более подробно: понятие «подресурс» на самом деле не существует в HTTP.

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

/projects/1234/documents - это не описание обхода пути, это ключ к словарю.

Что касается HTTP, то прекрасно, что /projects/1234/documents существует, хотя /projects и /projects/1234 не существует.

Положите немного по-другому метаданные в вашем ответе,который включает код состояния, применяется к ресурсу /projects/1234/documents, и ни к чему другому .

Обратите внимание, что это идет в обоих направлениях: не только /projects/1234/documents не подразумевает ничего о /projects/1234, но это также тот случай, когда это ничего не значит о /projects/1234/documents/5678.

Лучшим указанием для того, чтобы разобраться в этом, по-прежнему будет тезис Филдинга .Также может помочь обзор RFC 7234

...