Web API中的传参方式
在Restful风格的WebApi的里面,API服务的增删改查,分别对应着Http Method的Get / Post / Delete /Put,下面简单总结了Get / Post /Delete /Put的传参方式
一、Get传参
get设计成传输小数据,而且最好是不修改服务器的数据,所以浏览器一般都在地址栏里面可以看到,数据放在url的QueryString中。
1.1 简单类型
$(function () {
$.ajax({
type: 'get',
url:'http://localhost:60761/api/News',
data: {Id:,Title:"新闻1",Desc:'这是新闻1'},
success: function (data) {
console.log(data)
}
})
});
1.2 复杂类型
如果我们想通过get传输复杂类型,如把Action中接收的参数是News类型来接受,发现不能通过get直接传参给复杂类型,如下图
为了实现get方式传参给复杂类型,这里提供了两种解决办法:
1.2.1 FromUri属性
FromUri的作用是强制从uri中给复杂类型参数赋值,只需要在上边代码的参数前边加上这个属性就可以了,运行结果如下:
1.2.2 序列化
$(function () {
$.ajax({
type: 'get',
url: 'http://localhost:60761/api/News',
data: { newstr: JSON.stringify({ Id: , Title: "新闻1", Desc: '这是新闻1' }) },
success: function (data) {
console.log(data)
}
})
});
这里我们用JavaScriptSerializer进行序列化的,实际开发中我们也可以使用Json.net进行,Json.net的效率要更高些。
二、post传参
post传输数据时,大小基本没有限制,数据存放在请求的报文体的Form中,用户在url中看不到数据,相对较安全,但是监听器也能很容易地检测到Form中的数据。
2.1 传单个简单类型(FromBody)
$(function () {
$.ajax({
type: 'post',
url: 'http://localhost:60761/api/News',
data: { "": "新闻1" },//这里的key必须为空
success: function (data) {
console.log(data)
}
})
});
2.2 传多个简单类型(dynamic)
传一个简单类型的时候也可以采用这种方式,这种方式的好处是可以不用写data:{"","value"}这样不好看的代码。
$(function () {
$.ajax({
type: "post",
contentType: 'application/json',//这个必须加上
url: "http://localhost:60761/api/News",
data: JSON.stringify({ Id: "1", Title: "这是新闻1", Desc: "这是新闻1" }),
success: function (data, status) { }
});
});
2.3 传一个复杂类型
$(function () {
$.ajax({
type: "post",
url: "http://localhost:60761/api/News",
data: { Id: "1", Title: "这是新闻1", Desc:"这是新闻1"},
success: function (data, status) { }
});
});
2.4 简单类型数组
var idArr = [1, 2, 3, 4];
$(function () {
$.ajax({
type: "post",
contentType: 'application/json',
url: "http://localhost:60761/api/News",
data: JSON.stringify(idArr),
success: function (data) { }
});
});
2.5 复杂类型数组
var newsArr = [
{ Id: 1, Title: "新闻1", Desc: "这是新闻1" },
{ Id: 2, Title: "新闻2", Desc: "这是新闻2" },
{ Id: 3, Title: "新闻3", Desc: "这是新闻3" }
]; $(function () {
$.ajax({
type: "post",
contentType: 'application/json',
url: "http://localhost:60761/api/News",
data: JSON.stringify(newsArr),
success: function (data) { }
});
});
注:put和delete的传参方式和Post一样,这里不再重复。
参考文档:
1.http://www.cnblogs.com/landeanfen/p/5337072.html
2.https://www.cnblogs.com/home-wang/p/5072904.html
Web API中的传参方式的更多相关文章
- react中的传参方式
react是一个SPA模式,即组件嵌套租,在一个单页面的应用中组件间的数值传递是必不可少的,主要的传参方式大致有一下几种: 1,在挂载的地方给组件传参 ReactDOM.rander(<a na ...
- axios中post传参方式
最近做vue项目,做图片上传的功能,使用get给后台发送数据,后台能收到,使用post给后台发送图片信息的时候,vue axios post请求发送图片base64编码给后台报错HTTP 错误 414 ...
- java 中 Integer 传参方式的问题
Java本身都是值传递式的调用,对于对象传递的是地址值.给地址值重新赋值等于重新指向,不会影响外层. 而且这里Integer对象也有特殊性.其实现上可能类似 class Integer{ final ...
- js 获取纯web地址栏中URL传参
function GetQueryString(name) { var reg = new RegExp("(^|&)"+ name +&quo ...
- 剖析Asp.Net Web API路由系统---WebHost部署方式
上一篇我们剖析了Asp.Net路由系统,今天我们再来简单剖析一下Asp.Net Web API以WebHost方式部署时,Asp.Net Web API的路由系统内部是怎样实现的.还是以一个简单实例开 ...
- mock和axios常见的传参方式
第一次接手项目,传参方式还有些吃力,因此做一下总结. 首先我们需要会看swagger中的接口.里面写了某个接口需要接收什么样的值,前端怎么传递这个值 在mock中的传参方式: mock中传参的方式有两 ...
- 在基于MVC的Web项目中使用Web API和直接连接两种方式混合式接入
在我之前介绍的混合式开发框架中,其界面是基于Winform的实现方式,后台使用Web API.WCF服务以及直接连接数据库的几种方式混合式接入,在Web项目中我们也可以采用这种方式实现混合式的接入方式 ...
- WEB API 中HTTP的get、post、put,delete 请求方式
一.WEB API 中HTTP 请求方式的四个主要方法 (GET, PUT, POST, DELETE), 按照下列方式映射为 CURD 操作: 1.POST 用于新建资源,服务端在指定的URI 上创 ...
- ASP.NET Web API中实现版本的几种方式
在ASP.NET Web API中,当我们的API发生改变,就涉及到版本问题了.如何实现API的版本呢? 1.通过路由设置版本 最简单的一种方式是通过路由设置,不同的路由,不同的版本,不同的contr ...
随机推荐
- Cash Machine POJ - 1276 多重背包二进制优化
题意:多重背包模型 n种物品 每个m个 问背包容量下最多拿多少 这里要用二进制优化不然会超时 #include<iostream> #include<cstdio> #in ...
- pip 使用
PIP的使用 作用 管理python的标准第三方库 安装 sudo apt-get install python3-pip 常用命令 [1] 安装软件包 pip3 install [package] ...
- nagios 配置 check_traffic 流量监控模块(被监控端)
安装软件包yum -y install net-snmp*chkconfig nrpe onchkconfig snmpd on 使用SCP命令拷贝 check_traffic.sh 到 / usr/ ...
- 【Luogu3602】Koishi Loves Segments(贪心)
[Luogu3602]Koishi Loves Segments(贪心) 题面 洛谷 题解 离散区间之后把所有的线段挂在左端点上,从左往右扫一遍. 对于当前点的限制如果不满足显然会删掉右端点最靠右的那 ...
- AES解密后多了\0
AES加密解密之后发现多了几个空格,不知道原因.在调试时发现多了\0这种东西 不知道为什么会多这些.后来.replace("\0","")这样做了事
- GCD HDU - 1695(容斥原理)
要求从满足gcd(x, y) = k的对数,其中x属于[1, n], y属于[1, m] gcd(x, y) = k ==>gcd(x/k, y/k) =1 x/k属于[1, n/k], y/k ...
- Ubuntu18.04下给Jupyter-NoteBook设置默认工作路径(附Win设置)
上一篇Jupyter的文章:https://www.cnblogs.com/dotnetcrazy/p/9201976.html Linux 生成配置文件:jupyter-notebook --gen ...
- JavaServer Faces (JSF) with Spring
JavaServer Faces (JSF) with Spring Last modified: April 30, 2018 by baeldung Spring+ Spring MVC JSF ...
- js 函数声明和函数表达式的区别
javascript中声明函数的方法有两种:函数声明和函数表达式. 区别如下: 1).以函数声明的方法定义的函数,函数名是必须的,而函数表达式的函数名是可选的. 2).以函数声明的方法定义的函数,函数 ...
- Vim auto-pairs设置选项
let g:AutoPairs = {'(':')', '[':']', '{':'}',"'":"'",'"':'"'} 设置要自动配对的 ...