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

    查看结果:

    这样是行的通的 

  • 相关阅读:
    IntelliJ IDEA 14.03 java 中文文本处理中的编码格式设置
    应聘感悟
    STL string分析
    CUDA SDK VolumeRender 分析 (1)
    BSP
    CUDA SDK VolumeRender 分析 (3)
    CUDA SDK VolumeRender 分析 (2)
    Windows软件发布时遇到的一些问题
    Ten Commandments of Egoless Programming (转载)
    复习下光照知识
  • 原文地址:https://www.cnblogs.com/wms01/p/6222286.html
Copyright © 2011-2022 走看看