Отправка x-www-form-urlencoded GET запроса
Нужно, чтобы GET-параметры передавались в виде x-www-form-urlencoded
{ a: { b: 1, c: 2 }, d: [ 3, 4, { e: 5 } ] } -> "a[b]=1&a[c]=2&d[]=3&d[]=4&d[2][e]=5" C POST параметрам и все понятно, но GET-параметры, во-первых, не отображаются в transformRequest, во-вторых, (даже если менять их в requestInterceptor) они автоматом склеиваются из объекта параметров, т.е. собранная строка будет разбита по символам. |
Если ты используешь $resource они именно так и будут передаваться.
|
Точно? Использую ресурс. Не передаются. Преобразуются в json, как написано в документации
|
Не точно :D Забыл, что у меня все запросы как x-www-form-urlencoded отправляются)
|
Т.е. везде проставляешь этот заголовок?) В каком месте это делаешь?
|
'use strict'; // GLOBAL CONFIG angular .module('ng') .config(function($httpProvider) { $httpProvider.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=utf-8'; $httpProvider.defaults.transformRequest.unshift(function(data) { return angular.isObject(data) ? Object.toQueryString(data) : data; }); }); |
Это для POST, а для GET?
|
$http.defaults.headers.common- для всех запросов |
Это же надо, был уверен, что у меня для всех (common) стоит, скопировал, даже не посмотрел :)
Tek, спс. Полез править в проекты =) Shitbox2, у меня такой враппер есть /** * Sends request to the server * @param {Object} options * @param {Object} data * @returns {Promise} * @private */ Server.prototype._request = function(options, data) { var prop = options.method === 'GET' ? 'params' : 'data'; options[prop] = data; return $http(options); }; Т.е. когда GET, то params, POST - data https://docs.angularjs.org/api/ng/service/$http#usage |
У меня все же не работает. Проблемы две:
1) ['Content-Type'] = 'application/x-www-form-urlencoded;charset=utf-8' работает только глобально, при установке $http.defaults.headers.common. А мне надо для конкретного ресурса настроить. 2) В любом случае это не работает с GET-параметрами. Даже в документации написано: Цитата:
|
Часовой пояс GMT +3, время: 04:03. |