簡體   English   中英

Angular ng-resource POST發送查詢參數而不是JSON

[英]Angular ng-resource POST sending query params not JSON

我正在嘗試使我的第一個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方法存在於資源對象上的唯一原因是,它可以將它附加到在獲取/查詢請求期間返回的對象上。 文檔僅在將$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);
$scope.createTest = function () {
   var newTest = new Test;
   newTest.name = "new name";
   newTest.nume="123";

    newTest.$save();

};

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM