Angularjs$resource DELETE未在请求体中传递数据
我有以下代码:Angularjs$resource DELETE未在请求体中传递数据,angularjs,Angularjs,我有以下代码: deleteArticle = function(assetData) { var defer; var assetId = assetData.assetId; var cseService = $resource(CSE_CONFIG.apiBaseUrl + 'articles/' + assetId,{}, {'remove': {method: 'DELETE', isArray: false}}); defer = $q.defer();
deleteArticle = function(assetData) {
var defer;
var assetId = assetData.assetId;
var cseService = $resource(CSE_CONFIG.apiBaseUrl + 'articles/' + assetId,{}, {'remove': {method: 'DELETE', isArray: false}});
defer = $q.defer();
$log.info(assetData.data);
cseService.remove(assetData.data, function(results) {
return defer.resolve(results);
}, function(results) {
$log.error('suggestionsService deleteArticle error', results);
return defer.reject(results);
});
return defer.promise;
}
assetData={“assetId”:12345,“数据”:{“不适当”:true,“注释”:“这是注释”}
我使用express作为服务器,这是我的路线:
app.delete('/api/v1/articles/:assetId', function (req, res) {
console.log("delete is called for " + req.params.assetId);
console.log(req.body);
for (var i = 0; i < suggestions[0].articles.length; i++) {
var row = suggestions[0].articles[i];
if (row.assetId === req.params.assetId) {
suggestions[0].articles.splice(i,1);
console.log("REMOVED:::::");
console.log(row);
return res.send("OK",200);
}
}
return res.send("BAD Request",400);
});
app.delete('/api/v1/articles/:assetId',函数(req,res){
log(“为“+req.params.assetId”调用delete);
控制台日志(请求主体);
对于(var i=0;i<建议[0]。articles.length;i++){
var row=建议[0]。文章[i];
if(row.assetId==req.params.assetId){
建议[0]。文章。剪接(i,1);
log(“已删除:”;
控制台日志(行);
返回res.send(“OK”,200);
}
}
返回res.send(“错误请求”,400);
});
当我将其发送到服务器时,req.body不包含assetData.data。所以问题是,如何使用$resource和method=DELETE发送正文?
注意:我使用Chrome:Postman REST客户端测试了服务器,它工作正常,但在使用angular时工作不正常。您可以修改$resource的每个请求的默认行为。 签入$resource TransformRequest 例如:
var myResource = $resource(url, params, {
'delete' : function(data,headers) {
var myData = { bob: 'bob' };
return myData;
}
}
在进一步搜索之后,似乎无法使用$resource在requestfordelete方法中发送正文。我注意到,我试图传递的内容被转换为查询字符串。查看$resource源,主体可以在POST、PUT或PATCH中使用,但不能在delete中使用。我想我必须使用$http服务。可能是重复的