2017-02-14 3 views
0

Две вещи:Может HTTP POST используется для получения данных - не создать новые данные

во-первых, я правильно, что POST HTTP может быть использован для получения имеющейся информации? Если да, то каков код ответа?

Во-вторых, если можно использовать POST, какой идентификатор формата URL-адреса в приложении Web.API и какие данные следует отправлять на сервер.

Безопасность компании не предотвращает использование HTTP Get, но они сильно препятствуют этому из-за каких-либо проблем безопасности. OTOH, мне очень не нравится называть метод PostInformation(), когда я хочу ПОЛУЧИТЬ существующую информацию.

Благодаря

ответ

1

Я правильно, что POST HTTP может быть использован для получения имеющейся информации?

От RFC 7231, section 4.3.3:

Почты запрашивает метод, что процесс целевого ресурса представление заключена в запросе в соответствии с собственными конкретными семантики ресурса.

Это означает что сервер изменяет состояние, а не строго требует его. Так что да, хотя и не очень поощряется, это безопасно. На самом деле многие веб-приложения в прошлом делали это, чтобы обойти ограничения метода GET, такие как overly long URLs.

Какой формат URL-адреса в приложении Web.API и какие данные следует отправлять на сервер.

URL-адрес будет таким же, как и query string. Если вы помечаете тело вашего запроса application/x-www-form-urlencoded, вы можете заполнить его той же строкой, которую вы обычно использовали для строки запроса. Для более сложных или двоичных данных вы должны использовать multipart/formdata (см. this answer).

Я действительно не люблю именование метода PostInformation(), когда я хочу получить существующую информацию

, который в значительной степени не проблема. Я понимаю ваши заботы, но учтите следующее: то, что вы в конечном счете делаете, это получение данных. Как вы делаете это, это деталь реализации используемого протокола. Ничто не должно мешать вам называть ваш метод PostInformation(). Кроме того, что вам нужно было сделать, если изменения вступили в силу, и вы вдруг использовали GET вместо POST? Рефакторинг всех вхождений PostInformation() в GetInformation()?

+0

Спасибо! Кроме того, я получаю то, что вы говорите о наименовании метода, но я один из тех невообразимых, буквальных, людей! ;-) – EoRaptor013