繁体   English   中英

发布到REST界面

[英]Posting to a REST interface

需要在URL中将名称定义为ID,并且需要发布包含数据的对象。

$ scope.dvModel.naam是充当ID的名称。 显然,filteredObject是包含数据的对象。

根据一些示例,这就是我所说的服务,看起来还可以。

saveDVservice.query($scope.dvModel.naam, filteredObject);

这是实际的服务。

.factory('saveDVservice', ['$resource', 'CONSTANTS', function($resource, CONSTANTS) {
    'use strict';
    return $resource(CONSTANTS.REST_BASE_URL + '/dv/:name', {}, { query: { method: 'POST', isArray: false, headers: { 'Content-Type': 'application/json' }}});
}]);

这是我在网络选项卡的查询字符串参数中看到的内容:0:A 1:D 10:n 11:h 12:i 13:l 14:f 15:e 2:A 3:C 4:5:P 6 :a 7:n 8:n 9:e

这是名称,但看起来像一个数组。

请求有效负载包含正确顺序的实际对象。 可以给我一些如何处理的指导吗?

据我了解,您想将$scope.dvModel.naam放入URL中,并且希望filteredObject成为请求有效负载。 然后,您需要一个对象,该对象包含键name filteredObject$scope.dvModel.naam中所有内容,该值等于$scope.dvModel.naam

另外,您的资源的定义可能应该更改-在第二个参数$resource您需要告诉它从给定对象中提取URL数据的方式:

$resource(CONSTANTS.REST_BASE_URL + '/dv/:name', {name: '@name'}, { query: { method: 'POST', isArray: false, headers: { 'Content-Type': 'application/json' }}});

不幸的是,当您的有效载荷数据与URL数据分开时, $resource并不是最好的$http包装器。 也许将filteredObject数据包装在有效载荷中的其他对象中会更好吗? 然后,您的$resource对象会更好,例如{name: ..., data: {"0": "A", "1": "D", ...}}

由于query默认操作是{method: 'GET', isArray: true} ,所以我将其保留为其他默认值,而是save 这应该开箱即用。

app.factory('DVService', function ($resource) {
  return $resource(CONSTANTS.REST_BASE_URL + '/dv', {name: '@name'}, {}); 
}); 

app.controller('MainCtrl', function ($scope, DVService) {
  var postData = {
    name: 'name',
    fooProp: 'foo',
    barProp: 'bar'
  };

  // save/post        
  DVservice.save({dv: postData}).$promise.then(function (response) {
    console.log(response);
  });

  //query/get
  DVService.query({name: 'name'}).$promise.then(function (response) {
    console.log(response);
  });
}); 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM