[英]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.