Restangular 不会改变 Http Content-Type
Posted
技术标签:
【中文标题】Restangular 不会改变 Http Content-Type【英文标题】:Restangular won't change Http Content-Type 【发布时间】:2014-08-23 23:06:47 【问题描述】:为了将文件作为表单的一部分发送,我将内容类型更改为“multipart/form-data”,但是当我检查控制台时,它仍在使用应用程序/json;charset=utf-8 并且 Node.js(带有 Sails.js 框架)会打印一个错误,指出它是无效的 JSON。
代码如下:
$rootScope.objects.user.withHttpConfig(
transformRequest: angular.identity
).customPUT($scope.objects.user, "", // user object contains a file
'Content-Type': "multipart/form-data" // should change content-type. I've tried using `undefined` as well
).then(function(resp)
if (resp == "OK")
$scope.successes = [
msg: "Saved"
];
, function(err)
console.log(err);
$scope.errors = err.data.errors;
);
谷歌浏览器中的“检查网络请求”标签如下:
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:30.0) Gecko/20100101 Firefox/30.0
Referer: http://localhost:1337/user/settings
Host: localhost:1337
DNT: 1
Content-Type: application/json;charset=utf-8
Content-Length: 505679
Connection: keep-alive
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Accept: application/json, text/plain, */*
【问题讨论】:
头参数不应该是第四个参数吗? github.com/mgonto/restangular#custom-methods 看到这个答案:***.com/questions/24933574/… 【参考方案1】:正如上面评论中所说,根据文档,您应该将标题作为第四个参数传递。所以你的代码应该是
$rootScope.objects.user.withHttpConfig(
transformRequest: angular.identity
).customPUT(
$scope.objects.user,
undefined,
undefined,
'Content-Type': "multipart/form-data"
).then(function(resp)
if (resp == "OK")
$scope.successes = [
msg: "Saved"
];
, function(err)
console.log(err);
$scope.errors = err.data.errors;
);
参考网址:https://github.com/mgonto/restangular#custom-methods
【讨论】:
以上是关于Restangular 不会改变 Http Content-Type的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 httpbackend 测试 Restangular http 调用以测试成功和错误情况?
无法使用ngx-restangular处理离子4项目获取错误:无法找到模块“core-js / fn / object”[关闭]