Как отправить запрос тела с GET - PullRequest
0 голосов
/ 17 сентября 2018

Я работаю с angularjs, и из моего сервиса мне нужно вызвать сервер, используя параметр пути (id), параметры запроса (var1 и var2) и запрос тела ({ "codes": ["1000"]}) - который должен быть отправлен как строковый массив в методе get (я знаю, отправка запроса тела должна быть сделана в POST).

Пока у меня на службе есть:

        function getSub(id, var1, var2) {
           var payload = {
               first: var1,
               second: var2
           };

           var url = 'sub/' + id + '/mylink'
           return api.get(url, payload, {"codes": ["1000"]}).then(function (response) {
               console.log("READ RESPONSE ", response);
               return response;
           });
        };

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

Это может быть нубский вопрос, но не лучший, но я решил найти решение для этого. Пока что, просматривая сеть повсюду, я мог только понять, что это неортодоксальный способ использования запроса тела.

Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 17 сентября 2018

Насколько я знаю, в стандарте нет заявления о теле запроса типа get.Таким образом, это классический , это зависит от реализации .В любом случае, реализации, как правило, не поддерживают такую ​​комбинацию.И XMLHttpRequest является одним из них:

send () принимает необязательный параметр, который позволяет вам указать тело запроса;это в основном используется для запросов, таких как PUT.Если метод запроса имеет тип GET или HEAD, параметр тела игнорируется, а для тела запроса устанавливается значение null.

0 голосов
/ 17 сентября 2018

Да, вы можете отправить тело запроса с помощью GET, но это не имеет смысла.Вы можете проанализировать его на сервере и изменить свой ответ на основе его содержимого. Вы игнорируете эту рекомендацию в спецификации HTTP / 1.1, раздел 4.3:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...