• WebApi 参数绑定方法


    WebAPI 2参数绑定方法

     

    简单类型参数

    Example 1: Sending a simple parameter in the Url

    01
    02
    03
    04
    05
    06
    07
    08
    09
    10
    11
    [RoutePrefix("api/values")]
    public class ValuesController : ApiController
    {
      // http://localhost:49407/api/values/example1?id=2
      [Route("example1")]
      [HttpGet]
      public string Get(int id)
      {
         return "value";
      }
    }

    Example 2: Sending simple parameters in the Url

    01
    02
    03
    04
    05
    06
    07
    // http://localhost:49407/api/values/example2?id1=1&id2=2&id3=3
    [Route("example2")]
    [HttpGet]
    public string GetWith3Parameters(int id1, long id2, double id3)
    {
        return "value";
    }

    Example 3: Sending simple parameters using attribute routing

    01
    02
    03
    04
    05
    06
    07
    // http://localhost:49407/api/values/example3/2/3/4
    [Route("example3/{id1}/{id2}/{id3}")]
    [HttpGet]
    public string GetWith3ParametersAttributeRouting(int id1, long id2, double id3)
    {
       return "value";
    }

    Example 4: Sending an object in the Url

    // http://localhost:49407/api/values/example4?id1=1&id2=2&id3=3
    [Route("example4")]
    [HttpGet]
    public string GetWithUri([FromUri] ParamsObject paramsObject)
    {
      return "value:" + paramsObject.Id1;
    }
     

    Example 5: Sending an object in the Request body

    [Route("example5")]
    [HttpPost]
    public string GetWithBody([FromBody] ParamsObject paramsObject)
    {
      return "value:" + paramsObject.Id1;
    }

    注意 [FromBody] 只能用一次,多于一次将不能正常工作

    Calling the method using Urlencoded in the body:

    01
    02
    03
    04
    05
    06
    User-Agent: Fiddler
    Host: localhost:49407
    Content-Length: 32
    Content-Type: application/x-www-form-urlencoded
     
    id1=1&id2=2&id3=3

    webapiparams_01

    Calling the method using Json in the body

    01
    02
    03
    04
    05
    06
    User-Agent: Fiddler
    Host: localhost:49407
    Content-Length: 32
    Content-Type: application/json
     
    { "Id1" : 2, "Id2": 2, "Id3": 3}
    webapiparams_02

    Calling the method using XML in the body

    This requires extra code in the Global.asax

    01
    02
    03
    04
    05
    06
    07
    08
    09
    10
    11
    12
    protected void Application_Start()
    {
       var xml = GlobalConfiguration.Configuration.Formatters.XmlFormatter;
       xml.UseXmlSerializer = true;
    The client request is as follows:
     
    User-Agent: Fiddler
    Content-Type: application/xml
    Host: localhost:49407
    Content-Length: 65
     
    <ParamsObject><Id1>7</Id1><Id2>8</Id2><Id3>9</Id3></ParamsObject>

    webapiparams_03

    数组和列表(Array,List)

    Example 6: Sending a simple list in the Url

    01
    02
    03
    04
    05
    06
    07
    08
    09
    10
    11
    12
    // http://localhost:49407/api/values/example6?paramsObject=2,paramsObject=4,paramsObject=9
    [Route("example6")]
    [HttpGet]
    public string GetListFromUri([FromUri] List<int> paramsObject)
    {
      if (paramsObject != null)
      {
        return "recieved a list with length:" + paramsObject.Count;
      }
     
      return "NOTHING RECIEVED...";
    }

    Example 7: Sending an object list in the Body

    01
    02
    03
    04
    05
    06
    07
    08
    09
    10
    11
    12
    // http://localhost:49407/api/values/example8
    [Route("example8")]
    [HttpPost]
    public string GetListFromBody([FromBody] List<ParamsObject> paramsList)
    {
      if (paramsList != null)
      {
         return "recieved a list with length:" + paramsList.Count;
      }
     
      return "NOTHING RECIEVED...";
    }

    Calling with Json:

    01
    02
    03
    04
    05
    06
    User-Agent: Fiddler
    Content-Type: application/json
    Host: localhost:49407
    Content-Length: 91
     
    [{"Id1":3,"Id2":76,"Id3":19},{"Id1":56,"Id2":87,"Id3":94},{"Id1":976,"Id2":345,"Id3":7554}]

    webapiparams_05_json

    Calling with XML:

    01
    02
    03
    04
    05
    06
    07
    08
    09
    10
    User-Agent: Fiddler
    Content-Type: application/xml
    Host: localhost:49407
    Content-Length: 258
     
    <ArrayOfParamsObject>
    <ParamsObject><Id1>3</Id1><Id2>76</Id2><Id3>19</Id3></ParamsObject>
    <ParamsObject><Id1>56</Id1><Id2>87</Id2><Id3>94</Id3></ParamsObject>
    <ParamsObject><Id1>976</Id1><Id2>345</Id2><Id3>7554</Id3></ParamsObject>
    </ArrayOfParamsObject>

    webapiparams_04_xml

    Example 8: Sending object lists in the Body

    01
    02
    03
    04
    05
    06
    07
    08
    09
    10
    11
    [Route("example8")]
    [HttpPost]
    public string GetListsFromBody([FromBody] List<List<ParamsObject>> paramsList)
    {
      if (paramsList != null)
      {
        return "recieved a list with length:" + paramsList.Count;
      }
     
      return "NOTHING RECIEVED...";
    }

    This is a little bit different to the previous examples. The body can only send one single object to Web API. Because of this, the lists of objects are wrapped in a list or a parent object.

    01
    02
    03
    04
    05
    06
    07
    08
    09
    10
    11
    12
    13
    14
    15
    16
    17
    18
    POST http://localhost:49407/api/values/example8 HTTP/1.1
    User-Agent: Fiddler
    Content-Type: application/json
    Host: localhost:49407
    Content-Length: 185
     
    [
     [
      {"Id1":3,"Id2":76,"Id3":19},
      {"Id1":56,"Id2":87,"Id3":94},
      {"Id1":976,"Id2":345,"Id3":7554}
     ],
     [
      {"Id1":3,"Id2":76,"Id3":19},
      {"Id1":56,"Id2":87,"Id3":94},
      {"Id1":976,"Id2":345,"Id3":7554}
     ]
    ]
  • 相关阅读:
    Matplotlib中柱状图bar使用
    python IDLE颜色设置
    linux报错汇总
    PCA
    高斯混合模型
    深度解剖dubbo源码---01dubbo的架构原理-探索.mp4
    SpringCloud之初识Feign
    第七模块 :微服务监控告警Prometheus架构和实践
    第四模块 :微服务调用链监控CAT架构和实践
    skywalking中文文档
  • 原文地址:https://www.cnblogs.com/chaoshenzhu/p/7357847.html
Copyright © 2020-2023  润新知