加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 使用web api,你将如何创建一个带有id列表的方法?

发布时间:2020-12-15 21:55:59 所属栏目:百科 来源:网络整理
导读:我想有一个方法(api动作方法),看起来像: public ListUser GetUserList(int userId,string commaSeperatedListOfIds){...} 根据我的理解,web api控制器将自动转换json请求并映射参数,因此最好将自定义类创建为如下参数: public class UserListRequest{ publ
我想有一个方法(api动作方法),看起来像:

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; }
}

希望这可以帮助.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读