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 = 1, 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; }
看一下请求结果:
结果是可以的,但是必须要加上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 = 2, 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; }
查看结果:
这样是行的通的
作者:王家大人
出处:http://wms01.cnblogs.com
限于本人水平,如果文章和代码有表述不当之处,还请不吝赐教。
声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
分类:
ASP.NET WebAPI
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?