2012-08-30 31 views
1

我剛開始使用RestSharp和WebApi進行遊戲時遇到了一些問題。使用RestSharp將多個參數發佈到webapi

我不知道這是否是最好的做法,甚至有可能,但我會通過代碼演示了(這不是我的確切的代碼,但它是完全一樣的概念)

[HttpPost] 
    public HttpResponseMessage CreateEmployee(Employee emp, int employeeType) 
    { 
     // CREATE EMPLOYEE 
     return Request.CreateResponse(HttpStatusCode.Created, emp.id); 
    } 

我已經創建了一個控制檯應用程序來使用RestSharp測試這個。以下是我的:

 var client = new RestClient(); 
     client.BaseUrl = @"http://localhost:15507"; 

     var employee = new Employee(); 
     //populate employee model 

     postrequest.Method = Method.POST; 
     postrequest.Resource = "api/Employee/CreateEmployee"; 
     postrequest.AddHeader("Accept", "application/json"); 
     postrequest.AddHeader("Content-Type", "application/json"); 
     postrequest.RequestFormat = DataFormat.Json; 

     postrequest.AddBody(new { emp = employee, listId = 2 }); 
     var res = client.Execute(postrequest); 

我得到的錯誤是employeeType參數爲空。我的格式正確嗎?這是甚至可以做到的嗎?

當我刪除從的WebAPI操作方法的employeeType參數和修改請求:

 postrequest.AddBody(employee); 

一切工作正常。

什麼想法?由於

回答

1

如果從URI期待employeetype,如果它沒有定義路線的一部分,你可以把它作爲查詢字符串參數...例如:

API /員工/在CreateEmployee? employeeType =

+0

謝謝,我會試試看。但是有可能將它傳遞給主體而不是作爲JSON字符串的一部分,而不是將它放在URL中? – Shaz

+2

你不能從身體讀取多個參數。只有一個是允許的。 –

+0

謝謝基蘭。對於那些尋找更多信息的人來說,這裏有一篇相當不錯的關於參數綁定的文章:http://blogs.msdn.com/b/jmstall/archive/2012/04/16/how-webapi-does-parameter-binding.aspx – Shaz