javascript - Angular ng-resource POST 发送查询参数而不是 JSON

标签 javascript angularjs ngresource

我正在尝试让我的第一个 ng-resource 示例正常工作。问题是它以查询参数而不是 JSON 的形式发送数据。

我的 REST 资源有此服务。 REST_URL_PREFIX 只是一个常量。

angular.module('myApp')
  .service('Test', ['$resource', 'REST_URL_PREFIX', function Test($resource, URL_PREFIX) {
     return $resource(URL_PREFIX + 'test/:id');
  }]);

像这样使用。

var obj = {name: 'Test', num: 12345};
var objRest = new Test();
objRest.$save(obj);

我可以在控制台中看到它调用 Web 服务,如下所示:

POST http://server/rest/test?name=Test&num=12345 

我希望它像这样调用:

POST http://server/rest/test  

但是请求正文中包含 JSON。

{name: 'Test', num: 12345}

请求的内容类型自动为 application/json,所以我认为它会发送 JSON?

我是不是错过了什么?我确实花了很长时间搜索,有很多类似的问题,但没有一个解决我的问题。

编辑
最终我希望它能从表单提交详细信息。

$scope.submit = function(test) {
  > Code to save test parameter using Test resource required here
}

谢谢

最佳答案

原始海报的代码如下:

var obj = {name: 'Test', num: 12345};
var objRest = new Test();
objRest.$save(obj);

但是,从已接受的答案中并不能立即看出什么,因此我的帖子试图澄清这一点。 $save 函数是否直接在 $resource 服务上使用。在此代码的上下文中,new Test() 将创建 Angular 资源类的实例,用于进行 RESTful 调用。

应该使用的函数是 save 函数,而不是 $save

@Ben Thurley 应该使用以下代码:

var obj = {name: 'Test', num: 12345};
var objRest = new Test();
objRest.save(obj);

差异非常微妙,但意味着 POST 调用是使用查询参数而不是 http 请求正文中的 JSON 进行的。

我怀疑 $save 方法存在于资源对象上的唯一原因是可以将其附加到在获取/查询请求期间返回的对象。 documentation仅在将 $save 用于从请求返回的对象之一的上下文中提及。

例如:

var myRESTResourceEndPoint = $resource('/foo/:bar', {bar: null});
var foo = myRESTResourceEndPoint.get({bar: 123});

那么$save在此上下文中有效:

foo.$save();

其中 save 在此上下文中有效:

myRESTResourceEndPoint.save();

之所以会出现混淆,是因为以下代码将产生结果,但不是按照预期的方式产生:

foo.$save(foo);

myRESTResourceEndPoint.$save(foo);

关于javascript - Angular ng-resource POST 发送查询参数而不是 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24551680/

相关文章:

javascript - 将多个 Nodejs 导出返回值分配给变量时出现问题

javascript - 动态地按比例计算 css translate 属性值

angularjs - ngResource 和 Json API 规范

javascript - 错误做法 - 从 PHP while 循环为 getElementbyID 生成 javascript 代码

javascript - 使用 Plotly.js 动态创建/删除/重新设计图形的最佳方式?

javascript - 如何在不迭代数组的情况下从 $scope 中删除对象?

javascript - 从另一个模块隐藏元素

javascript - 重用 ionic 示例

angularjs - 处理 save() 方法 $ngResource 上的错误回调

javascript - ngResource save() 方法回调的参数是什么