Ich habe eine Bestellung Ressource, die so aussieht.PUT Anfrage Senden von Parametern über URL
.factory('Order', order)
order.$inject = ['$resource', "ApiEndpoint"];
function order($resource, ApiEndpoint) {
return $resource(ApiEndpoint.url + 'orders.json', {}, {
create: {method: 'POST', url: ApiEndpoint.url + 'orders.json'},
update: {method: 'PUT'},
edit: {method: 'GET', url: ApiEndpoint.url + 'orders/edit.json'},
remove_item: {method: 'GET', url: ApiEndpoint.url + 'orders/remove_item.json'},
});
}
Als ich Order.update
laufen wie so
var params = {
order: {
line_items_attributes: {0: {quantity: 2, id: 1}}
},
order_id: 3
};
Order.update(params, function (resp, respHeaders) {
console.log("response headers", respHeaders());
console.log("change quantity resp", resp);
})
Ich habe auch versucht dies:
Order.update({}, params, function (resp, respHeaders) {
console.log("response headers", respHeaders());
console.log("change quantity resp", resp);
})
Die params an den Server innerhalb der URL am Ende gesendet wird. Zum Beispiel war dies eine der Urls der Server
erhieltpath="/api/mobile/orders.json?order=%7B%22line_items_attributes%22:%7B%220%22:%7B%22quantity%22:8,%22id%22:356265%7D%7D%7D"
Ich sollte auch beachten, dass das Verfahren durch den Server eine OPTIONS
Anforderung empfangen wird. Der Server wurde dafür eingerichtet.
Da ich eine PUT-Anfrage senden, warum ist $resource
die Params über die URL und nicht Teil der Nutzlast liefern?
Ich versuchte dies und die Parameter werden noch in die URL geladen. – jason328
der Aufruf von OPTIONEN sollte durch [CORS] (https://en.wikipedia.org/wiki/Cross-origin_resource_sharing) verursacht werden, ist Ihr API-Endpunkt auf einer anderen Domäne als die eckige App? –
Ja ist es. Ich glaube, in der Vergangenheit haben wir dieses Problem behoben, als wir in der Vergangenheit eine POST-Anfrage gemacht haben und die POST-Anfrage nicht wie in der PUT-Anfrage Parameter an die URL weitergibt. – jason328