慧
我正在服务器端使用angular.js和node.js(Express.js)构建一个应用程序。
由于某些原因,我在处理删除请求时遇到问题。没有人会进入服务器端。
这是我的angular.js资源代码:
$scope.deleteProject = function(projectName){ var postData = {username: 'name', projectName: projectName}; Project.deleteProject.delete({}, postData, function(res){ alert('Project Deleted'); }, function(err){ alert(err.data); }); }
在服务器端,我有这个:
var deleteProject = function(req, res){ console.log(req.body); console.log(req.params); if (req.body.projectName){ //do something return res.send(200); } else return res.send(400, 'no project name was specified'); }
现在由于某种原因根本没有身体!它是空的。我已将路线定义为app.delete。
如果我将node.js中的路由更改为post,将其更改为angular.js以保存,则效果很好。
我在这里想念什么(敲头)。
谢谢。
根据此堆栈溢出问题和$http服务源代码,使用的DELETE请求$http不允许在请求的正文中发送数据。 对于是否应允许请求正文,DELETE请求的规范有些含糊,但是Angular不支持它。
$http
DELETE
这允许请求主体的唯一方法是POST,PUT和PATCH。因此,问题不在您的代码中的任何地方,而是在Angular的$http服务中。
POST
PUT
PATCH
我的建议是使用泛型$http(...)函数并传递适当的方法:
$http(...)
$http({ method: 'DELETE', url: '/some/url', data: {...}, headers: {'Content-Type': 'application/json;charset=utf-8'} })