webApi中参数传递
webApi中参数传递
一:无参数的get方法;
前端:
function GetNoParam() {
//为了统一:我们都采用$.ajax({}) 方法;
$.ajax({
url: '/api/User/GetNoParam',
type: 'get',
dataType: 'application/json', //application/xml webapi 返回的数据类型,客户端请求时添加在请求头中
//当无法转换成客户想要的数据时,将报错;
success: function (data) {
alert(data);
$.each(data, function (index, item) {
alert(item["Name"]);
})
}
});
}
后端:
public List<User> GetNoParam()
{
var userList = new List<User>
{
new User{Id=,Name="Jack"},
new User{Id=,Name="Frank"}
}; return userList; }
二:get+一个参数
前端:
//通过get传递一个参数的方法;
function GetByOneParam() {
$.ajax({
url: '/api/User/GetByOneParam',
type: 'get',
data:{"Name":"Jack"},
dataType: 'json',
success: function (data) {
var value = data;
}
});
}
后端:
public List<User> GetByOneParam(string Name)
{
//这里我们传递一个参数:
var userList = new List<User>
{
new User{Id=,Name="Jack"},
new User{Id=,Name="Frank"}
};
var query = (from u in userList
where u.Name == Name
select u
).ToList();
return query;
}
三:get+两个参数或以上;
前端:
function GetByTwoParam() {
$.ajax({
url: '/api/User/GetByOneParam',
type: 'get',
data:{"Name":"Jack","Id":1},
dataType: 'json',
success: function (data) {
var value = data;
}
});
}
后端:
public List<User> GetByTwoParam(string Name,int Id)
{
//这里我们传递一个参数:
var userList = new List<User>
{
new User{Id=,Name="Jack"},
new User{Id=,Name="Frank"}
};
var query = (from u in userList
where u.Name == Name && u.Id==Id
select u
).ToList();
return query;
}
四:POST无参数返回数据值
前端:
//通过post的方法来获取数据;
function PostNoParam() {
$.ajax({
url: '/api/User/PostNoParam',
type: 'Post',//post方式
dataType: 'json',
success: function (data) {
var value = data;
}
});
}
后端:
public List<User> PostNoParam()
{
var userList = new List<User>
{
new User{Id=,Name="Jack"},
new User{Id=,Name="Frank"}
}; return userList;
}
五:post+一个参数(小心这里有陷阱)
前端:
function PostByOneParam() {
$.ajax({
url: '/api/User/PostByOneParam',
type: 'Post',//post方式
data:{"":"Jack"}, //注意这里的key值是空的
dataType: 'json',
success: function (data) {
var value = data;
}
}); }
后端:
//注意这里的关键是添加一个:FromBody
// to force web api to read simple type from the request body
// add [FromBody] attribute to the para
//[FromBody] 就告诉Web API 要从post请求体重去获取参数的值。
//Web API 的模型绑定器希望找到 [FromBody] 并不是我们常见的 key=value 的键名的值,也就是说, 不是 key=value ,而是 =value 。
//在前端key为空值
//还有一个特点:[FromBody] 修饰的参数只能有一个。我们需要对传递的多个参数进行封装才行。
public List<User> PostByOneParam([FromBody]string Name)
{
var userList = new List<User>
{
new User{Id=,Name="Jack"},
new User{Id=,Name="Frank"}
};
var query = ( from u in userList
where u.Name == Name
select u
).ToList(); return query;
}
六:POST 提交多个参数;
前端:
//组合多个参数
function PostByMoreParam() {
//或者这种方式也可以的额
var data = { Name: "jack", Id: 1 };
$.ajax({
url: '/api/User/PostByMoreParam',
type: 'Post',//post方式
data: data, //这样传递对象 后台是能够获取到值滴呀
dataType: 'json',
success: function (data) {
var value = data;
}
});
}
//或则这样写
function PostByMoreParam1() {
var data = { Name: "jack", Id: 1 };
var value = JSON.stringify(data);
//使用JSON.stringify转化一下;
//传递的数据格式是json字符串
$.ajax({
url: '/api/User/PostByMoreParam',
type: 'Post',//post方式
data: value,
dataType: 'json',
contentType: 'application/json', //如果你使用了 JSON.stringify将对象转化成了字符串,那么这里就要添加这个;
success: function (data) {
var value = data;
}
});
//application/x-www-form-urlencoded 表示的是:窗体数据被编码为名称/值对。
//并不是json格式对于的 application/json
}
后端:
public List<User> PostByMoreParam(User user) //这里是实体对象滴呀
{
var userList = new List<User>
{
new User{Id=,Name="Jack"},
new User{Id=,Name="Frank"}
};
var query = (from u in userList
where u.Name == user.Name && u.Id == user.Id
select u
).ToList(); return query;
}
7.传递多个不同对象的Post请求
前台:
function PostMoreObj() {
var stu = { Name: "jack", Id: 1 };
var course = { Id: 1, CourseName: "语文", SId: 1 };
//尝试直接这样传递看看得得行滴呀;
$.ajax({
url: '/api/User/PostMoreObj',
type: 'Post',//post方式
data: { "user": stu, "course": course },
dataType: 'json',
success: function (data) {
alert(typeof(data));
var value = data;
}
});
}
后台:
//有时候我们还会遇到需要传递多个不同对象参数的情况,
//对于这种特殊的情况在 Json.Net 中为我们提供了一个 名为 JObject 的通用对象容器
public bool PostMoreObj(Newtonsoft.Json.Linq.JObject jData)
{
dynamic json = jData;
Newtonsoft.Json.Linq.JObject juser = json.user;
Newtonsoft.Json.Linq.JObject jcourse = json.course; var stu = juser.ToObject<User>();
var course = jcourse.ToObject<CourseInfo>(); //然后就转化成了我们想要的数据滴呀; return true;
}
不过在新的公司里面,采用的是代理的方式,所以这些方法可能暂时用不到(是不是觉得很高端,代理哦~)
webApi中参数传递的更多相关文章
- WebApi中的参数传递
在WebApi开发过程中,遇到一些客户端参数格式传输错误,经常被问到参数如何传递的一些问题,因此就用这篇博客做一下总结,肯定其它地方呢也有类似的一些文章,但是我还是喜欢通过这种方式将自己的理解记录下来 ...
- .NET Core WebAPI post参数传递时后端的接收方式
.NET Core WebAPI post参数传递时后端的接收方式 实体类 dynamic动态类型 JObject参数 单值参数(字符串参数) A.前端Post请求代码 $.ajax({ url: & ...
- Autofac - MVC/WebApi中的应用
Autofac前面写了那么多篇, 其实就是为了今天这一篇, Autofac在MVC和WebApi中的应用. 一.目录结构 先看一下我的目录结构吧, 搭了个非常简单的架构, IOC(web), IBLL ...
- WebAPI中无法获取Session对象的解决办法
在MVC的WebApi中默认是没有开启Session会话支持的.需要在Global中重写Init方法来指定会话需要支持的类型 public override void Init() { PostAut ...
- webapi 中的本地登录
WebApi 身份验证方式 asp.net WebApi 中有三种身份验证方式 个人用户账户.用户可以在网站注册,也可以使用 google, facebook 等外部服务登录. 工作和学校账户.使用活 ...
- webapi 中使用 protobuf
相比json来说,好处是速度更快,带宽占用更小.其效果大致等于json+Gzip. 在webapi中使用protobuf的方法为: 引用nuget包 Install-Package protobuf- ...
- 【AspNetCore】【WebApi】扩展Webapi中的RouteConstraint中,让DateTime类型,支持时间格式化(DateTimeFormat)
扩展Webapi中的RouteConstraint中,让DateTime类型,支持时间格式化(DateTimeFormat) 一.背景 大家在使用WebApi时,会用到DateTime为参数,类似于这 ...
- 在asp.net WebAPI 中 使用Forms认证和ModelValidata(模型验证)
一.Forms认证 1.在webapi项目中启用Forms认证 Why:为什么要在WebAPI中使用Forms认证?因为其它项目使用的是Forms认证. What:什么是Forms认证?它在WebAP ...
- 在WebAPI中自动创建Controller
在MIS系统中,大部分的操作都是基本的CRUD,并且这样的Controller非常多. 为了复用代码,我们常常写一个泛型的基类. public class EntityController<T& ...
随机推荐
- Hashtable和Dictionary<T,K>的使用
由于Hashtable内部自带有排序(根据Key的HashCode来进行的),因此有时在使用Hashtable时就会造成数据顺序不可控的情况,有两种办法可以解决, 测试代码: Dictionary&l ...
- eWebeditor编辑器上传图片路径错误解决方法[疑难杂症]【转,作者:unvs】
做了一个多版本的网站,后台用的编辑器是eWebeditor,NET版,后面发现上传图片或者文件之后,路径错误无法显示,必须手工修改才行.. 为了更清楚的说明问题,我下面会说的比较详细,首先是网站文件框 ...
- 通过程序校验xml文档学习笔记
校验xml文档,可以通过程序来校验,利用一段js代码即可. 各行代码的含义已经写出,运行这个html文件,检验如下xml代码: 结果如下: 如果xml文档出现错误: 结果如下: 其中,obj.asyn ...
- NBU7.0 Image Cleanup作业在没有配置hot catalog backup的情况下失败,Status=1
Issue NBU7.0 Image Cleanup作业在没有配置hot catalog backup的情况下失败,Status=1 Error NBU7.0 Image Cleanup作业失败, D ...
- redis之如何配置jedisPool参数
JedisPool的配置参数很大程度上依赖于实际应用需求.软硬件能力,JedisPool的配置参数大部分是由JedisPoolConfig的对应项来赋值的. maxActive:控制一个poo ...
- OpenCV学习笔记——图像的腐蚀与膨胀
顺便又复习了一下cvcopy如何进行图像拼接(最近觉得打开多幅图像分别看不如缩小掉放拼接到一幅图像上对比来的好) 首先把拼接的目标图像设置兴趣区域ROI,比如我有一个total,要把a.b.c分别从左 ...
- Eclipse学习记录
设置背景色:http://jingyan.baidu.com/article/2a138328b5d9ea074a134fc7.html 项目文件说明:http://www.cnblogs.com/p ...
- PHP 开启短标签
<?=STATIC_URL?> 让上面的语句可以正常运行,等同于下面的语句 <?php echo STATIC_URL;?> 可以在 php.ini 中找到 short_ope ...
- java list<int>报错
请问一下在java中的List<int> list=new List<int>();这条语句的两个int处会报错,请问为什么? 答: 两处错误:第一:List是接口,需要实现类 ...
- centos时间同步方法
centos时间同步方法 电脑软硬件应用网 45IT.COM 时间:2012-12-08 18:09 作者:李本清 新装的服务器可能设置了错误的,需要调整时区并调整时间.如下是使用NTP来从一个时间服 ...