Хотя я рискую оказаться непопулярным, я говорю, что в настоящее время они бесполезны .
Я думаю, что они были хорошо задуманы и полезны в прошлом, когда, например, DELETE сообщал серверу об удалении ресурса, найденного по указанному URL-адресу, а PUT (с его родственным PATCH) указывал серверу выполнять обновление идемпотентным образом.
Вещи развивались и URL , стал виртуальным (см перезаписи URL , например) , что делает ресурсы теряют свой первоначальный смысл реальной папки / subforder / файл и так, глаголы действия CRUD , охватываемые HTTP методов протокола (GET, POST, PUT / PATCH, DELETE) потерял .
Возьмем пример:
- / api / entity / list / {id} против GET / api / entity / {id}
- / api / entity / add / {id} против POST / api / entity
- / api / entity / edit / {id} против PUT / api / entity / {id}
- / api / entity / delete / {id} против DELETE / api / entity / {id}
Слева не написан HTTP-метод, по сути это не имеет значения (достаточно POST и GET), а с правой стороны используются соответствующие HTTP-методы.
Правая сторона выглядит элегантно, чисто и профессионально. Представьте, что теперь вам нужно поддерживать код, который использует элегантный API, и вам нужно искать, где выполняется вызов удаления. Вы будете искать «api / entity» и среди результатов увидите, какой из них выполняет DELETE. Или, что еще хуже, у вас есть младший программист, который по ошибке переключил PUT на DELETE, и с URL-адресом произошло то же самое.
На мой взгляд, включение команды действия в URL-адрес имеет преимущества перед использованием соответствующего HTTP-метода для этого действия, даже если это не так элегантно. Если вы хотите увидеть, где выполняется вызов удаления, вам просто нужно найти «api / entity / delete», и вы сразу найдете его.
Создание API без всего массива методов HTTP упрощает его последующее использование и обслуживание.