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& ...
随机推荐
- COJ977 WZJ的数据结构(负二十三)
试题描述 输入一个字符串S,输出S的最长连续回文子串长度. 输入 输入一个字符串S. 输出 输出S的最长连续回文子串长度 输入示例 abacbbc 输出示例 4 其他说明 1<=|S|<= ...
- Ajax注册验证用户名是否存在 ——引自百度经验
Ajax注册验证用户名是否存在 http://jingyan.baidu.com/article/a948d6515fdf870a2dcd2e85.html
- 【C语言】10-字符和字符串常用处理函数
一.字符处理函数 下面介绍的两个字符处理函数都是在stdio.h头文件中声明的. 1.字符输出函数putchar putchar(65); // A putchar('A'); // A int a ...
- uc_key getshell
<?php $key = 'cebbvi5s15BSiMXteaP9TNCIz5K5jAVekw7tcV9TqmYCNT5VOJdu7toOxipTX';#uc_key 写在这里 $url = ...
- 关于javascript在作用域中的变量定义你所不知道的一些东西
//先看一段代码 var a = 100; function test(){ alert(a); var a = 200; } test(); /* 结果:undifined 原因:js引擎在执行sc ...
- JDBC连接执行 MySQL 存储过程报权限错误:User does not have access to metadata required to determine stored procedure parameter types. If rights can not be granted,
国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html 内部邀请码:C8E245J (不写邀请码,没有现金送) 国 ...
- alpha发布用户数
小组名称:天天向上 小组成员:张政.张金生.林莉.胡丽娜 项目内容:连连看 在连连看alpha发布的24小时内,我们将连连看安装包放入各个组员所加入的QQ群内,推荐朋友试玩,用户数达到9人. 现在有A ...
- maven资源文件的相关配置
构建Maven项目的时候,如果没有进行特殊的配置,Maven会按照标准的目录结构查找和处理各种类型文件. src/main/java和src/test/java 这两个目录中的所有*.java文件会 ...
- 微信的User-Agent
Mozilla/5.0 (Linux; U; Android 5.0.2; zh-cn; MI 2C Build/LRX22G) AppleWebKit/533.1 (KHTML, like Geck ...
- BAT批处理(二)
在前一篇中已对BAT批处理基础作了一些总结,但是对于BAT批处理还有很多的知识点没有讲解到,比如DOS中的特殊符号:IF.FOR的使用:变量:更多的DOS命令等等.本文在前一篇的基础上继续对BAT批处 ...