Я розробляю API для переходу HTTP, і мені цікаво, чи використовувати команду HTTP POST, але лише з параметрами URL-запиту та відсутністю запиту - це хороший спосіб.
Міркування:
- "Хороший веб-дизайн" вимагає надсилання невідповідних дій через POST. Це неімпотентна дія.
- Простіше розробити та налагодити цей додаток, коли параметри запиту присутні в URL-адресі.
- API не призначений для широкого використання.
- Схоже, що запит POST без жодного тіла займе трохи більше роботи, наприклад,
Content-Length: 0
заголовок повинен бути явно доданий. - Також мені здається, що POST без тіла є трохи протилежним очікуванням більшості розробників та HTTP фреймворків.
Чи є якісь підводні камені або переваги для надсилання параметрів на запит POST через запит URL, а не тіло запиту?
Редагувати: Причина, що розглядається, полягає в тому, що операції не є безсильними та мають інші побічні ефекти, крім отримання. Дивіться специфікацію HTTP :
Зокрема, було встановлено, що методи GET і HEAD НЕ мають мати значення для вжиття інших дій, ніж пошук. Ці методи слід вважати "безпечними". Це дозволяє користувачам-агентам представляти інші способи, такі як POST, PUT та DELETE, спеціальним чином, щоб користувач ознайомився з тим, що вимагається можлива небезпечна дія.
...
Методи також можуть мати властивість "idempotence", оскільки (окрім помилок чи проблем із закінченням терміну дії) побічні ефекти N> 0 однакових запитів такі ж, як і для одного запиту. Методи GET, HEAD, PUT та DELETE поділяють цю властивість. Крім того, методи ВАРІАНТИ та ТРЕБА НЕ повинні мати побічних ефектів, і вони по суті є безсильними.