博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
WebApi参数传递
阅读量:5019 次
发布时间:2019-06-12

本文共 2385 字,大约阅读时间需要 7 分钟。

c# webapi的参数传递方式:1、查询字符串(query string);2、内容主体(content body)

当然也有cookie或url部分或头部信息(header)等其它传方式,这里仅讨论这两种。

1、查询字符串(query string)

如果是简单数据类型或使用了FromUri特性修饰的参数,将使用查询字符串作为数据源。

例1:因为参数p为复合类型,默认使用request body做为数据源,所以如果想以query string为数据源,则不能省略 FromUri修饰。

1     ///  2     /// 
3 /// 调用方式: 4 /// test?p=1&p=2 5 /// test?p[]=1,2 6 ///
7 ///
8 public class Test : ApiController 9 {10 public string Post([FromUri]string[] p)11 {12 if (p == null)13 return "NULL";14 else if (p.Length == 0)15 return "EMPTY";16 else return string.Join(",", p);17 }18 }

 

例2:

1     ///  2     /// 
3 /// 调用方式: 4 /// test?p=1 5 ///
6 ///
7 public class Test : ApiController 8 { 9 public string Post(string p)10 {11 if (p == null)12 return "NULL";13 else if (p.Length == 0)14 return "EMPTY";15 else return string.Join(",", p);16 }17 }

2、内容主体(content body)

如果是复合数据类型或使用了FromBody特性修饰的参数,将使用内容主体作为数据源。在webapi中,body不会被缓存,仅可获取一次,故只能对body接收一次参数,所以不适合传递多参数数据。

例1:x-www-form-urlencoded编码方式时,注意不能带参数名。

1     ///  2     /// 
3 /// post请求头: 4 /// Content-Type: application/x-www-form-urlencoded 5 /// Cache-Control: no-cache 6 /// 7 /// =v1&=v2 8 ///
9 ///
10 public class TestController : ApiController11 {12 public string Post([FromBody]string[] p)13 {14 if (p == null)15 return "NULL";16 else if (p.Length == 0)17 return "EMPTY";18 else return string.Join(",", p);19 }20 }

例2:Content-Type为json时

1     ///  2     /// 
3 /// post请求头: 4 /// Content-Type: application/json 5 /// Cache-Control: no-cache 6 /// 7 /// ["v1","v2"] 8 ///
9 ///
10 public class TestController : ApiController11 {12 public string Post([FromBody]string[] p)13 {14 if (p == null)15 return "NULL";16 else if (p.Length == 0)17 return "EMPTY";18 else return string.Join(",", p);19 }20 }

 

转载于:https://www.cnblogs.com/lazyls/p/4642630.html

你可能感兴趣的文章
《Ext JS模板与组件基本知识框架图----模板》
查看>>
txmpp
查看>>
微信开发时调用jssdk,在安卓设备中成功调用;在ios设备中返回错误消息:config fail,无其他具体错误消息,且接口权限显示获取ok,无法调用...
查看>>
【Github教程】史上最全github使用方法:github入门到精通
查看>>
抽象工厂模式(Abstract Factory)
查看>>
luogu1373 小a和uim之大逃离 (dp)
查看>>
Redis的Pub/Sub客户端实现
查看>>
DirectFB 之 动画播放初步
查看>>
SQL日常问题和技巧——持续更新
查看>>
springMVC入门(一)------springMVC基本概念与安装
查看>>
Sam做题记录
查看>>
[bzoj] 2453 维护数列 || 单点修改分块
查看>>
IIS版本变迁
查看>>
使用Gzip压缩提升WEB服务器性能
查看>>
BZOJ3884: 上帝与集合的正确用法 拓展欧拉定理
查看>>
mybatis09--自连接一对多查询
查看>>
myeclipse10添加jQuery自动提示的方法
查看>>
【eclipse jar包】在编写java代码时,为方便编程,常常会引用别人已经实现的方法,通常会封装成jar包,我们在编写时,只需引入到Eclipse中即可。...
查看>>
视频监控 封装[PlayCtrl.dll]的API
查看>>
软件工程APP进度更新
查看>>