Подтвердить что ты не робот

API требует аргументов POST в строке запроса?

Я играю с API-интерфейсом Twitter и замечаю что-то смешное. Для обновлений они требуют методов POST, но ожидают аргументы в строке запроса. (См. Например, вызов статуса/обновления в консоли разработчика здесь.)

Очевидно, это технически возможно, но зачем кому-то это делать? Не соответствуют ли аргументы POST в теле?

4b9b3361

Ответ 1

Любой параметр является таким же допустимым. Мой любимый пример использования параметров в URL-адресе для POST - это приложение, которое устанавливает путевые точки на карте. например.

     POST /map/route/45/waypoints?lat=35&long=74

В этом случае параметры имеют больше смысла в URI в качестве идентификаторов местоположения, чем только параметры передаются в теле на общий ресурс.

Ответ 2

В архитектуре REST GET и POST - это всего лишь глаголы, которые указывают либо на получение, либо на создание/обновление ресурса. URI определяет идентификацию ресурса.

Пример:

POST /student?name=Tom&age=12 >> It will create a new student with name Tom and age 12.
POST /student/10?name=Tom&age=12 >> It will update student with id 20 with name Tom and age 12.

Не существует правила, согласно которому данные должны быть привязаны к полезной нагрузке тела или URI. Это отличается от представлений WEB 1.0, где данные формы HTML отправляются в POST.

Ответ 3

Если аргументы для WEB API находятся в теле или запросе, зависит от заголовка Content-Type, который вы отправляете в POST.

Если это forconstance является Content-Type: application/json; charset = UTF-8, то аргументы ожидаются в теле как json. Если это Content-Type: application/x-www-form-urlencoded; charset = UTF-8, то аргументы ожидаются в строке запроса