public List<User> GetUserList(int userId,string commaSeperatedlistofIds) { ... }
根据我的理解,web api控制器将自动转换json请求并映射参数,因此最好将自定义类创建为如下参数:
public class UserListRequest { public int UserId {get;set;} public string CsvlistofIds {get;set;} }
解决方法
From what I understand,a web api controller will automatically
convert the json request and map the parameters,so is it best to
create a custom class
是,如果随请求一起传递的数据可以映射到对象,则Web API会将JSON或XML对象转换为类对象.
如果您希望您的json数据进入您的方法的对象内,那么首先定义一个将保存您的json数据的类.
public class UserListRequest { public int UserId { get; set; } public string CsvlistofIds { get; set; } }
[HttpPost] public List<User> GetUserList(UserListRequest obj) { List<User> list = new List<User>(); list.Add(new User { ID = obj.UserId }); list.Add(new User { ID = obj.UserId + 1 }); //something return list; }
请记住使用[HttpPost]属性.还应该有一个post方法,你可以注释掉控制器中已经提供的Post方法. (如果你想在你的控制器中有多个post方法,那么请看this question)
您可以通过jquery或fiddler(或任何您想要的方式)发送请求.我用fiddler测试了它.你可能会看到How to debug a Web API through Fiddler
设置好控制器后,然后构建项目并以调试模式启动它.启动fiddler并转到作曲家.
将控制器的URI(来自IE / brower)粘贴到地址栏中,然后选择POST作为Http方法.
你的URI就像:
http://localhost:60291/api/values/GetUserList
在fiddler Composer中 – >请求标头指定
Content-Type: application/json
在fiddler Composer中 – >请求正文,指定您的JSON
{ "UserId": 1,"CsvlistofIds": "2,3,4,5" }
(您也可以使用http://json2csharp.com/从json创建C#模板类)
在控制器中的方法上放置调试点,然后在fiddler Hit Execute中,您将看到Visual Studio中的Debug点是Hit,并且数据填充在参数中.
稍后您可以返回List< User>,您将在fiddler中看到响应.
[{"ID":1},{"ID":2}]
暂时我创建了一个类User:
public class User { public int ID { get; set; } }
希望这可以帮助.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。