angular度$资源删除不会发送正文express.js服务器
惠,
我正在服务器端build立一个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中的path发布和angular.js保存它工作正常。
我在这里错过了什么(敲我的头)。
谢谢。
根据这个堆栈溢出问题和$http
服务源代码 ,使用$http
的DELETE
请求不允许在请求的主体中发送数据。 DELETE请求的规范对于是否允许请求主体有些模糊,但是Angular不支持。
允许请求主体的唯一方法是POST
, PUT
和PATCH
。 所以这个问题不在你的代码中,在Angular的$http
服务中。
我的build议是使用通用的$http(...)
函数,并传递适当的方法:
$http({ method: 'DELETE', url: '/some/url', data: {...}, headers: {'Content-Type': 'application/json;charset=utf-8'} })
Angular默认将DELETE请求的Content-Type作为text / plain发送。 只需将其添加到标题:
var config = { method: "DELETE" url: yourUrl data: yourData headers: {"Content-Type": "application/json;charset=utf-8"} }; $http(config);
如果要将它们添加到每个DELETE请求中,请将其添加到主控制器中的app.config方法中:
$httpProvider.defaults.headers.delete = { "Content-Type": "application/json;charset=utf-8" };
刚碰到这个问题。 你将不得不使用url参数发送一个ID删除。
在快递中:
app.delete('/api/user/:userId', user.remove);
并添加到angular的url:
$http({url: 'whatever/api/'+obj.id, method: 'DELETE'}) ...
以下为我工作:
$httpProvider.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'; $httpProvider.defaults.headers.common['Content-Type'] = 'application/json;charset=utf-8';
XMLHttpRequest是可选的,但是如果你发送ajax则很有用。 https://docs.angularjs.org/api/ng/provider/ $ httpProvider获取更多信息。
这对我有效。
$httpProvider.defaults.headers.delete = { "Content-Type": "application/json;charset=utf-8" };
接着
$http.delete(url, { data: data })
如果你想使用$资源对象而不是$ http,你需要添加hasBody
和headers
如下:
delete: { method: 'DELETE', hasBody: true, headers: {"Content-Type": "application/json;charset=UTF-8"} }
为我工作
- 在hash标签之后,sails无法从请求中读取GET参数
- 在将数据导出到excel / csv angularjs的同时设置列宽和文字包装属性
- SPA(angular度)身份validation与OAuth2提供商的独立域上的API和身份validation服务器; Google,Facebook
- 如何在for循环中处理量angular器promise?
- 在与Yeoman一起设置AngularJS项目后,发布“npm install”
- mongoose:“投入embedded失败的价值在path。 不能使用'in'运算符search'_id'
- AngularJS SPA使用API和Mongoose
- Heroku错误:页面通过HTTPS加载,但请求一个不安全的脚本'angular-route.js'
- Express:使用ejs时找不到静态文件