Почему Twitter отказался от использования DELETE в качестве метода запроса в своем API?

Twitter отказался от использования всех методов, которые используют DELETE в качестве метода запроса,

DELETE :user/lists/:id  

И теперь вместо этого используется POST в качестве метода запроса,

POST lists/destroy

Почему Twitter прекратил использовать DELETE в своем API в целом и теперь использует только POST и GET для всех методов?

  • Это производительность?
  • Это безопасность?
  • В чем преимущества создание API, который использует только POST и GET?

Ответ 1

Я думаю, что были проблемы с совместимостью с некоторыми клиентами, которые могли выпускать запросы DELETE. Оглядываясь назад на docs для одного из устаревших вызовов, я нашел этот показ.

Примечание по использованию: клиенты, которые не могут выдавать запросы DELETE, могут POST с помощью добавленный параметр _method=DELETE

Итак, мое чувство (и догадка) состоит в том, что, поскольку глагол DELETE не поддерживается равномерно, он был удален в системном масштабе.


Обновление: Я отправил твиттер в Тейлор (@episod) в Twitter и спросил, что он думал о выше, и он отправил следующие ответы:

@arcain [ответ] в значительной степени покрывает его; отсутствие неуважения к идиллическому REST. DELETE по-прежнему обычно работает над этими методами, но мы опускаем их из документов. [ссылка]

@arcain, хотя большинство упомянутых методов не были устарели из-за метода HTTP, так как из-за неуклюжих шаблонов URL. [ссылка]

Таким образом, удобство использования - наряду с совместимостью - казалось, было ключевой проблемой с устареванием.