1

我嘗試打我的API控制器,我可以使它在那裏。但是該方法沒有從請求的主體中獲取我的參數。我知道這是小事。從請求正文中得不到我的參數

我試着圍繞以多種不同方式添加參數來移動服務。目前爲止似乎沒有任何工作。

重點要注意的事情

這是一個MVC 4應用程序是否有幫助。我相信這是角度語法或控制器屬性。

我正在使用HTTPPost。

服務

(function() { 
'use strict'; 
var rmdsnewServices = angular.module('rmdsnewServices', ['ngResource']); 

rmdsnewServices.factory('rmds', ['$resource', 
    function ($resource) { 
     return { 
      rmdnewly: $resource('/api/rmd/', {}, { 
       query: { 
        method: 'GET', params: {}, url: '/api/rmd/getNewly/', isArray: false, 
        transformResponse: function (data) { return { list: angular.fromJson(data) } } 
       } 
      }), 

      rmdsave: $resource('/api/rmd/AddRMD/:newrmd', { newrmd: '@newrmd' }, { 
       save: { 

        method: 'POST', params: { newrmd: '@newrmd' } 

       } 

      }) 



     }; 
    }]); 
})(); 

API控制器

[Route("api/rmd/AddRMD")] 
    [HttpPost] 
    public HttpResponseMessage AddRMD([FromBody]string newrmd) 
    { 
     var rmd = newrmd; 

     bool result; 
     //result = rs.AddRMD(newrmd); 
     result = true; 
     if (result) 
     { 
      return new HttpResponseMessage(System.Net.HttpStatusCode.OK); 
     } 
     else 
     { 
      return new HttpResponseMessage(System.Net.HttpStatusCode.ExpectationFailed); 
     } 
    } 
+1

IINM你發送一個(JSON)對象,但是,API期望一個「簡單的」字符串。檢查瀏覽器發送的有效負載,以驗證實際上發送到端點的內容。 Hth ... – EdSF

+1

嘗試在您的api中將簽名更改爲:公共HttpResponseMessage AddRMD(字符串newrmd) –

+0

@AmmarHamidou如果我脫掉[FromBody],我不再觸碰該方法。我找不到404。 – sleath

回答

1

你的控制器動作需要一個字符串。 此外,您的$資源並不需要發送的:PARAM上的網址:

     rmdsave: $resource('/api/rmd/AddRMD/', { }, { 
         save: { 
          method: 'POST' 
         } 
        }) 

然後發送一個簡單的字符串,將打擊你的控制器:

 angular.module('rmdsnewServices').controller('MyController', ['rmds', function (rmds) { 
     this.click = function() { 
      rmds.rmdsave.save("'asd'"); 
     } 
    }]); 

要發送的對象,而不是字符串:

rmds.rmdsave.save({Name:"someName"}); 



    public class Test 
    { 
     public string Name { get; set; } 
    } 

    public class rmdController : ApiController 
    { 
     [HttpPost, Route("api/rmd/AddRMD")] 
     public HttpResponseMessage SomePath([FromBody] Test newrmd) 
     { ... 
+0

如果我想發送Json,這會是相同的設置嗎? – sleath

+1

是的,除了您的Web API控制器將獲得Model而不是字符串,並且框架將爲您執行數據綁定。 rmds.rmdsave.save({})發送一個對象 –

+0

這會如何改變我在api上的保存? – sleath