Быть RESTful с кодами состояния и поведением для лучших практик размещения и удаления

у меня есть несколько вопросов о передовой практике RESTful:

1) Если сервер получает запрос DELETE, находит ресурс и удаляет его. Что является хорошей практикой для ответа? 200 OK мне кажется наиболее естественным, но у вас также есть такие коды, как 202 Accepted. Использование последнего может сделать Клиента более очевидным, что это то, что обрабатывает Сервер, а не просто отвечает OK.

2) Если сервер получает ДРУГОЙ запрос на удаление на том же ресурсе. Что лучше всего здесь сделать, вы отвечаете 404 Ресурс не найден или вы просто отвечаете 200 OK (или 202 OK), аргументируя это тем, что DELETE и PUT должны быть идемпотентными?

3) Сервер получает запрос PUT, но запись не может быть найдена в базе данных. Что вы отвечаете с? 404? Какой-то другой код с целью, которой мы хотим сказать клиенту, что это не настоящий «веб 404», а просто факт, что мы его искали, но не смогли найти ресурс?

4) Когда вы отвечаете сообщениями, а не просто кодами состояния?

200 OK {"Сообщение": "Клиент удален"}

Чувствует себя излишним.


person imbageek    schedule 27.05.2013    source источник


Ответы (1)


1) Я не понимаю. 200 здесь правильно. 202 — это что-то другое («Запрос принят в обработку, но обработка не завершена».).

2) Неважно. Действительно.

3) Затем создайте запись.

4) Если вам нечего сказать, кроме «ОК», не говорите.

person Julian Reschke    schedule 27.05.2013
comment
Джулиан. 2) Правда? Как насчет мышления в терминах идемпотентности? GET, HEAD, PUT, DELETE, OPTIONS и TRACE предназначены для использования в качестве идемпотентных операций; то есть «побочные эффекты N › 0 одинаковых запросов такие же, как и для одного запроса». (RFC2616 §9.1.2) 3) Но PUT должен только обновлять ресурсы, и использование PUT указывает, что вы знаете что-то о ресурсе (его локаторе), например, его идентификатор. Верно? Клиентам не должно быть разрешено создавать ресурсы со своими собственными идентификаторами. - person imbageek; 28.05.2013
comment
2) Побочный эффект тот же; просто код состояния другой. 3) PUT также может создавать ресурсы. В этом нет ничего плохого, если вы хотите разрешить клиенту выбирать свои URI. Вы не обязаны поддерживать это, но можете. - person Julian Reschke; 28.05.2013