Web API初探

前几天有位同事说web api中的接口参数为对象的时候不好接收,具体什么方式我忘记了,虽然本人以前并没有接触过这方面的知识,但是据说和MVC差不多的,今天小小的研究一下,我想应该是可以的。

直接新建一个WEB API的项目,本人使用HttpClient这个类进行HTTP请求(简单方便强大些)

一、GET请求

先看GET方式请求

我们先新建一个用户对象,重写ToString方法。

public class Users
{
public int Id { get; set; }
public string UserName { get; set; }
public override string ToString()
{
string str = string.Format("Id={0}&UserName={1}", Id, UserName);
return str;
}
}

然后在一个Action中编写请求方法:

public ActionResult Index()
{
Users users = new Users()
{
Id = ,
UserName = "wms"
};
string geturl = "http://localhost:34390/api/gpm/test/ObjGet?" + users.ToString();
HttpClient client = new HttpClient();
client.GetAsync(geturl);
return View();
}

接收端:

public class Users
{
public int Id { get; set; }
public string UserName { get; set; }
} [HttpGet]
public void ObjGet([FromUri]Users users)
{
var obj = users;
}

看一下请求结果:

Web API初探

结果是可以的,但是必须要加上HttpGet和FromUri这个属性,否则是不行的

二、POST方式

post方式还是有些麻烦的,为了便于传输,在Users类中新增一个方法:

public class Users
{
public int Id { get; set; }
public string UserName { get; set; }
public override string ToString()
{
string str = string.Format("Id={0}&UserName={1}", Id, UserName);
return str;
}
public Dictionary<string, string> ToDictionary()
{
return new Dictionary<string, string>()
{
{"Id",Id.ToString()},
{"UserName",UserName}
};
}
}

在看一次请求过程:

public ActionResult Index()
{
string posturl = "http://localhost:34390/api/gpm/test/ObjPost";
Users postUser = new Users()
{
Id = ,
UserName = "wms2"
};
HttpContent content = new FormUrlEncodedContent(postUser.ToDictionary());
HttpClient client = new HttpClient();
client.PostAsync(posturl, content);
return View();
}

接收端:

[HttpPost]
public void ObjPost([FromBody]Users users)
{
var user = users;
}

查看结果:

Web API初探

这样是行的通的

上一篇:Hash表的平均查找长度ASL计算方法


下一篇:UVA - 12298 Super Poker II NTT