2012-08-30 53 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