[英]Form Data Appears to be something else in Request Payload in Angular 4 http request
[英]Angular $resource service send data in Form Data instead of Request Payload
我面對有角度的$ resource服務的問題。
我試圖以不同的方式使用某些表單數據來創建REST API。
但是,每次我使用該API時,要么最終要么以QueryParams的形式發送數據,要么最終請求有效載荷。
我實際上需要將數據以編碼形式發送。
我的代碼如下所示:
var headers = {
'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8'
};
var save = function (url, params, headers, successcb, successParams, errorcb, errorParams) {
var promise = $resource(url, null, {
upload: {
method: methodPost,
headers: headers
}
}).save({}, params).$promise;
promise.then(function (response) {
successcb(response.data, successParams);
}, function (error) {
errorcb(error, errorParams);
});
};
我已經附上了角度ajax請求的快照。
參考上面的圖片,盡管我設置了x-www-form-urlencoded,但內容類型實際上是顯示application / json。 因此,數據將在RequestPayload中而不是FormData中輸出。
下面是jQuery ajax調用的另一幅圖像。
在這里,您可以清楚地看到content-type是x-www-form-urlencoded,並且工作正常。
我的疑問是,$ resource沒有發送適當的標頭,因此數據以RequestPayload的形式發送。
有沒有人遇到過這個問題?
任何幫助表示贊賞。
謝謝
您可以為此使用轉換請求,如下所示。
var transform = function(data) {
return $.param(data);
}
var headers = {
'Content-Type' : 'application/x-www-form-urlencoded;charset=UTF-8'
};
var save = function(url, params, headers, successcb, successParams, errorcb, errorParams) {
var promise = $resource(url, null, {
upload : {
method : methodPost,
headers : headers,
transformRequest : transform
}
}).save({}, params).$promise;
promise.then(function(response) {
successcb(response.data, successParams);
}, function(error) {
errorcb(error, errorParams);
});
};
這是由於$http
服務$resouce
的transformRequest
方法所依賴,該方法始終將Content-Type
標頭設置為application/json
。
要糾正此問題,您需要禁用它或將其更改為使用將規格設置為所需功能的功能。
此處的好文章: http : //www.bennadel.com/blog/2615-posting-form-data-with-http-in-angularjs.htm
嘗試:
var promise = $resource(url, null, {
upload: {
method: methodPost,
headers: headers,
transformRequest: []
},
}).save({}, params).$promise;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.