Хоча я ризикую не бути популярним, я кажу, що вони сьогодні не корисні .
Я вважаю, що вони були добре задуманими та корисними в минулому, коли, наприклад, DELETE наказав серверу видалити ресурс, що міститься за вказаною URL-адресою, а PUT (разом із братами PATCH) наказав серверу виконувати оновлення ідемпотентним способом.
Речі еволюціонували, а URL-адреси стали віртуальними (див., Наприклад, переписування URL-адреси ), завдяки чому ресурси втрачають початкове значення реальної папки / підпорядкувача / файлу, а отже, дієслова дії 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", і серед результатів вам доведеться побачити, який з них робить ВИДАЛИТИ. Або ще гірше, у вас є молодший програміст, який помилково переключив PUT на DELETE, і як URL це те саме, що сталося.
На мій погляд, розміщення дієслова дії у URL-адресі має переваги перед використанням відповідного методу HTTP для цієї дії, навіть якщо це не так елегантно. Якщо ви хочете побачити, де здійснюється виклик видалення, вам просто потрібно знайти "api / entity / delete", і ви знайдете його відразу.
Побудова API без усього масиву методів HTTP полегшує споживання та підтримку в подальшому