我希望能够突出显示x-www-form-urlencoded
请求默认。不是JSON。
angular 1.4.5
这不起作用。
angular.module('APP').config(['$httpProvider', function ($httpProvider) {
$httpProvider.defaults.headers.put['Content-Type'] = 'application/x-www-form-urlencoded';
$httpProvider.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
$httpProvider.defaults.paramSerializer = '$httpParamSerializerJQLike';
}]);
即使我在之后添加:
angular.module('APP').run(['$http', '$httpParamSerializerJQLike', function($http, $httpParamSerializerJQLike) {
$http.defaults.paramSerializer = $httpParamSerializerJQLike;
}]);
但是当我在发出请求时直接在服务/控制器中使用它时工作。 为:
$http.post('/auth', $httpParamSerializerJQLike({email: email, pwd: pwd}))
.then(...
现在我使用这个拦截器:(错误的代码,方式,但按我的意愿工作)
angular.module('APP').factory('ApiInterceptor', ['$q', '$httpParamSerializerJQLike',
function($q, $httpParamSerializerJQLike){
return {
request: function (config) {
$rootScope.loading = true;
if (config.method === "POST"){
if (config.data === undefined) config.data = {};
config.data = $httpParamSerializerJQLike(config.data);
}
return config || $q.when(config);
}
};
}]);
如何将整个应用程序配置为使用x-www-form-urlencoded而不使用自行车作为$.param
拦截器等。
答案 0 :(得分:1)
defaults.paramSerializer
仅用于构建网址,而不是POST
正文,defaults.transformRequest
是您正在寻找的内容