zoukankan      html  css  js  c++  java
  • 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;
    }

    查看结果:

    这样是行的通的 

  • 相关阅读:
    由VMnet引起的browser-sync故障解决方案
    Gen8折腾日记
    实变函数笔记(1)——集合与基数
    密码学笔记(6)——复杂度及其相关内容
    微分几何笔记(1)——参数曲线、内积、外积
    密码学笔记(5)——Rabin密码体制和语义安全性
    密码学笔记(4)——RSA的其他攻击
    密码学笔记(2)——RSA密码
    密码学笔记(1)——数论准备知识
    第七章小结
  • 原文地址:https://www.cnblogs.com/wms01/p/6222286.html
Copyright © 2011-2022 走看看