WebApi参数传递
c# webapi的参数传递方式:1、查询字符串(query string);2、内容主体(content body)
当然也有cookie或url部分或头部信息(header)等其它传方式,这里仅讨论这两种。
1、查询字符串(query string)
如果是简单数据类型或使用了FromUri特性修饰的参数,将使用查询字符串作为数据源。
例1:因为参数p为复合类型,默认使用request body做为数据源,所以如果想以query string为数据源,则不能省略 FromUri修饰。
/// <summary>
/// <example>
/// 调用方式:
/// test?p=1&p=2
/// test?p[]=1,2
/// </example>
/// </summary>
public class Test : ApiController
{
public string Post([FromUri]string[] p)
{
if (p == null)
return "NULL";
else if (p.Length == )
return "EMPTY";
else return string.Join(",", p);
}
}
例2:
/// <summary>
/// <example>
/// 调用方式:
/// test?p=1
/// </example>
/// </summary>
public class Test : ApiController
{
public string Post(string p)
{
if (p == null)
return "NULL";
else if (p.Length == )
return "EMPTY";
else return string.Join(",", p);
}
}
2、内容主体(content body)
如果是复合数据类型或使用了FromBody特性修饰的参数,将使用内容主体作为数据源。在webapi中,body不会被缓存,仅可获取一次,故只能对body接收一次参数,所以不适合传递多参数数据。
例1:x-www-form-urlencoded编码方式时,注意不能带参数名。
/// <summary>
/// <example>
/// post请求头:
/// Content-Type: application/x-www-form-urlencoded
/// Cache-Control: no-cache
///
/// =v1&=v2
/// </example>
/// </summary>
public class TestController : ApiController
{
public string Post([FromBody]string[] p)
{
if (p == null)
return "NULL";
else if (p.Length == )
return "EMPTY";
else return string.Join(",", p);
}
}
例2:Content-Type为json时
/// <summary>
/// <example>
/// post请求头:
/// Content-Type: application/json
/// Cache-Control: no-cache
///
/// ["v1","v2"]
/// </example>
/// </summary>
public class TestController : ApiController
{
public string Post([FromBody]string[] p)
{
if (p == null)
return "NULL";
else if (p.Length == )
return "EMPTY";
else return string.Join(",", p);
}
}
WebApi参数传递的更多相关文章
- webapi 参数传递详解
原因 经常有朋友遇到webapi参数传递问题,自己也碰到过一些坑,在此记录下正确的姿势,简单参数传递相信没有人会有问题,容易出现问题的是对象参数和表单参数. 1.WebApi5.2.3有FromBod ...
- [转]webApi 参数传递总结
在WebAPI中,请求主体(HttpContent)只能被读取一次,不被缓存,只能向前读取的流. 举例子说明: 1. 请求地址:/?id=123&name=bob 服务端方法: void Ac ...
- WebApi参数传递总结
在WebAPI中,请求主体(HttpContent)只能被读取一次,不被缓存,只能向前读取的流. 举例子说明: 1. 请求地址:/?id=123&name=bob 服务端方法: void Ac ...
- WebApi参数传递实例
Get 1.基础数据类型 1.1方法只含有一个形参 (1)Get传值的本质是通过url字符串拼接(2)Get传递参数本质是url字符串拼接,Request-Head头部传递,Request-Body中 ...
- WebApi参数传递总结(转)
出处:http://www.cnblogs.com/Juvy/p/3903974.html 在WebAPI中,请求主体(HttpContent)只能被读取一次,不被缓存,只能向前读取的流. 举例子说明 ...
- WebApi中的参数传递
在WebApi开发过程中,遇到一些客户端参数格式传输错误,经常被问到参数如何传递的一些问题,因此就用这篇博客做一下总结,肯定其它地方呢也有类似的一些文章,但是我还是喜欢通过这种方式将自己的理解记录下来 ...
- 【WebApi系列】详解WebApi如何传递参数
WebApi系列文章 [01]浅谈HTTP在WebApi开发中的运用 [02]聊聊WebApi体系结构 [03]详解WebApi参数的传递 [04]详解WebApi测试和PostMan [05]浅谈W ...
- WebApi如何传递参数
一 概述 一般地,我们在研究一个问题时,常规的思路是为该问题建模:我们在研究相似问题时,常规思路是找出这些问题的共性和异性.基于该思路,我们如何研究WebApi参数传递问题呢? 首先,从参数本身来说, ...
- webapi-2 接口参数
1. 实例 using System; using System.Collections.Generic; using System.Linq; using System.Net; using Sys ...
随机推荐
- Linux 下sleep()函数
调试程序发现起了一个子线程后,主线程上的sleep不生效了,看到这才明白... — Function: unsigned int sleep (unsigned int seconds) The sl ...
- 细说:Unicode, UTF-8, UTF-16, UTF-32, UCS-2, UCS-4
1. Unicode与ISO 10646 全世界很多个国家都在为自己的文字编码,并且互不想通,不同的语言字符编码值相同却代表不同的符号(例如:韩文编码EUC-KR中“한국어”的编码值正好是汉字编码GB ...
- Setup Entity Framework Environment
http://www.entityframeworktutorial.net/EntityFramework5/setup-entityframework-environment.aspx Entit ...
- VS2008下使用 CMFCPropertyGridCtrl 转载
http://blog.csdn.net/sunnyloves/article/details/5655575 在DLG中的基本应用 . 首先在Cxxdlg.h文件中加入 public: CMFCPr ...
- 【转载】Javascript中的this关键字
看了这篇文章 http://www.ruanyifeng.com/blog/2010/04/using_this_keyword_in_javascript.html 分情况讨论. 情况一:纯粹的函数 ...
- c#中获取服务器IP,客户端IP以及Request.ServerVariables详细说明
客户端ip: Request.ServerVariables.Get("Remote_Addr").ToString(); 客户端主机名: Request.ServerVaria ...
- 51nod1486 大大走格子
容斥定理+dp...妈呀#1rp耗尽了难怪最近那么衰... #include<cstdio> #include<cstring> #include<cctype> ...
- Codeforces 443 B Kolya and Tandem Repeat【暴力】
题意:给出一个字符串,给出k,可以向该字符串尾部添加k个字符串,求最长的连续重复两次的子串 没有想出来= =不知道最后添加的那k个字符应该怎么处理 后来看了题解,可以先把这k个字符填成'*',再暴力枚 ...
- HDU 3790 最短路径问题【Dijkstra】
题意:给出n个点,m条边,每条边的长度d和花费p,给出起点和终点的最短距离和花费,求最短距离,如果有多个最短距离,输出花费最少的 在用dijkstra求最短距离的时候,再用一个f[]数组保存下最少花费 ...
- Http Response Code
HTTP协议状态码表示的意思主要分为五类 ,大体是 : ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1×× 保留 2×× 表示请求成功地接收 3×× 为完成请求客户需 ...