API требует аргументов POST в строке запроса?
Я играю с API-интерфейсом Twitter и замечаю что-то смешное. Для обновлений они требуют методов POST, но ожидают аргументы в строке запроса. (См. Например, вызов статуса/обновления в консоли разработчика здесь.)
Очевидно, это технически возможно, но зачем кому-то это делать? Не соответствуют ли аргументы POST в теле?
Ответы
Ответ 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, то аргументы ожидаются в строке запроса