веб-сервис restful: как проверить, существует ли элемент с {id}? - PullRequest
0 голосов
/ 19 сентября 2018

Как вы проверите, существует ли элемент с {Id}?

  1. POST item / Id => 404, он не существует.409 он существует
  2. GET item / Id => 404 не существует.200 он существует
  3. HEAD item / Id => 404 не существует.200 он существует

Полагаю, лучший выбор - 3. Если глагол HEAD не отфильтрован.

Имеет ли 1 смысл?(Не помню, где я видел это предложение) 1 можно так же хорошо понять, как создать элемент и попытаться вставить его как «Id», и в этом случае он может вернуть 200, если это удастся (вместо 404)

1 Ответ

0 голосов
/ 19 сентября 2018

как проверить, существует ли элемент с {id}?

REST на самом деле не имеет элементов, у него есть ресурсы (ресурс может ссылаться на элемент - но это действительноподробности реализации).

Более того, «существует» на самом деле не является концепцией в REST

Ресурс может отображаться на пустой набор, что позволяет ссылаться на концепцию.до того, как какая-либо реализация этой концепции существует - понятие, которое было чуждо большинству гипертекстовых систем до появления Web

404, не говорит вам, что ресурс не существует - оно говорит вамчто в данный момент нет доступных представлений для этого ресурса.Не совсем то же самое.

Тем не менее ...

Если вы пытаетесь отправить сообщение на исходный сервер о ресурсе и хотите убедиться, что это не повредитсвойство, тогда правильнее всего использовать один из методов с safe семантикой.

Методы запроса считаются "безопасными", если их определенная семантика по существу доступна только для чтения;т. е. клиент не запрашивает и не ожидает никаких изменений состояния на исходном сервере в результате применения безопасного метода к целевому ресурсу.

Итак, из вашего списка, GETили HEAD являются подходящими, но не POST (потому что POST не имеет безопасной семантики).

...