Asp.Net WebAPI Get提交、Post提交处理
1.启用跨域提交
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Methods" value="GET, POST" />
</customHeaders>
</httpProtocol>
</system.webServer>
(function () {
var domain = 'http://localhost:5000/';
var apiUrl = {
getPostOne: function (action) {
return domain + 'postone/' + action;
},
getOne: function (action) {
return domain + 'getone/' + action;
}
}
window.apiUrl = apiUrl;
})();
2.Get方式和MVC相同
Get方式前台代码
/*
* 跨域的get请求
* 1个参数
*/
$.getJSON(apiUrl.getOne("testone"), {
name: 234
}).done(function (data) {
alert(data);
});
/*
* 跨域的get请求
* 2个参数
*/
$.get(apiUrl.getOne("TestTwo"), {
name: 'abc',
age:11
}, function (data) {
alert(data);
});
Get方式后台代码
/*
* 1.WebApi 控制器方法 默认仅支持一种格式的请求,默认为Post请求
* 2.WebApi 控制器方法 默认不支持Get请求,
* 抛出异常:The requested resource does not support http method 'GET'.
* 需要手动指定
* FromBody:指定参数来自外部请求
* FromUri:指定参数来自url
*/
//前台Get请求获取一个参数
[HttpGet]
public string TestOne(string name)
{
return string.Format("姓名:{0}", name);
}
//前台Get请求获取2个参数
[HttpGet]
public string TestTwo(string name, int age)
{
return string.Format("姓名:{0},年龄:{1}", name, age);
}
3.POST方式和MVC中不相同,只获取第一个参数,需要制定 FromBody标志
前台代码
/*
* 跨域的post请求
* 无参数,获取列表
*/
$.post(apiUrl.getOne("PostNull"), {
}, function (data) {
console.info(data);
alert(data[0].name);
});
/*
* 跨域请求Post
* 一个参数,不能指定key的名称
* 注意参数指定 json 字符串
*/
$.post(apiUrl.getOne("PostOne"),
{ '': '张三' },
function (data) {
alert(data);
});
/*
* 跨域请求Post
* 2个参数----失败
*/
$.post(apiUrl.getOne("PostTwo"),
{ name: '张三' ,age:12},
function (data) {
alert(data);
});
/*
* 跨域请求Post
* 1个对象参数
*/
$.post(apiUrl.getOne("PostThree"),
{ name: '张三', age: 12 },
function (data) {
alert(data);
});
$.ajax({
url: apiUrl.getOne("PostThree"),
data: { name: '张三', age: 12 },
type: 'post',
success: function (data) {
alert(data);
}
});
对应的后台代码
/*
* 1.WebApi 控制器方法 默认支持Post请求
* 2.默认情况下,
* 指定Controller,不指定action时,当前controller中有多种请求方式,
* 则:抛出异常,Multiple actions were found that match the request
* 3.post方式只能接受一个参数而且必须放在FromBody 里用FromBody特性标识
*/
//Post请求无参方法,返回结果json格式
[HttpGet]
[HttpPost]
public List<object> PostNull()
{
List<object> list = new List<object>() {
new { name="张三"},
new { name="李四",age=},
};
return list;
}
//Post请求一个参数
public string PostOne([FromBody] string name)
{
return string.Format("姓名:{0}", name);
}
/*Post请求2个参数,
* 参与外部交互action中只接受一个参数
* 不支持多个FromBody
* 抛出异常:"Can't bind multiple parameters ('name' and 'age') to the request's content."
*/
public string PostTwo([FromBody] string name, [FromBody] int age)
{
return string.Format("姓名:{0},年龄:", name, age);
}
//Post请求 1个 对象参数
public string PostThree([FromBody] Student stu)
{
return stu.ToString();
}
参考资料:
http://www.cnblogs.com/babycool/p/3922738.html
Asp.Net WebAPI Get提交、Post提交处理的更多相关文章
- .NET压缩图片保存 .NET CORE WebApi Post跨域提交 C# Debug和release判断用法 tofixed方法 四舍五入 (function($){})(jQuery); 使用VUE+iView+.Net Core上传图片
.NET压缩图片保存 需求: 需要将用户后买的图片批量下载打包压缩,并且分不同的文件夹(因:购买了多个用户的图片情况) 文章中用到了一个第三方的类库,Nuget下载 SharpZipLib 目前用 ...
- ASP.NET前台html页面AJAX提交数据后台ashx页面接收数据
摘要:最近在写网站,好不容易弄好了需求又变了,没错企业的门户网站硬要弄成后台管理系统一样,没办法作为小工的我只能默默的改.前台HTML页面需要提交数据到后台处理,又不能用form表单,于是乎研究了1天 ...
- ASP.NET WebApi OWIN 实现 OAuth 2.0
OAuth(开放授权)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用. OAuth 允许用户提供一个令牌, ...
- Asp.Net WebApi Action命名中已‘Get’开头问题
ApiController 中的Action 命名已‘Get’开头,Post方法提交失败 场景: 1.action命名使用Get开头 /// <summary> /// 获取用户的未读消息 ...
- Asp.Net WebApi 启用CORS跨域访问指定多个域名
1.后台action指定 EnableCors指定可访问的域名多个,使用逗号隔开 //支持客户端凭据提交,指定多个域名,使用逗号隔开 [EnableCors("http://localhos ...
- Asp.Net WebApi+Microsoft.AspNet.WebApi.Core 启用CORS跨域访问
WebApi中启用CORS跨域访问 1.安装 Nugget包Microsoft.AspNet.WebApi.Cors This package contains the components to e ...
- ASP.NET WebApi服务接口如何防止重复请求实现HTTP幂等性
一.背景描述与课程介绍 明人不说暗话,跟着阿笨一起玩WebApi.在我们平时开发项目中可能会出现下面这些情况; 1).由于用户误操作,多次点击网页表单提交按钮.由于网速等原因造成页面卡顿,用户重复刷新 ...
- Asp.Net WebApi Post请求整理(一)
Asp.Net WebApi+JQuery Ajax的Post请求整理 一.总结 1.WebApi 默认支持Post提交处理,返回的结果为json对象,前台不需要手动反序列化处理.2.WebApi 接 ...
- Asp.Net WebApi Get请求整理(一)
Asp.Net WebApi+JQuery Ajax的Get请求整理 一.总结 1.Asp.Net WebApi默认不支持Get请求,需要在Action方法上指定[HttpGet], 除非Action ...
- 基于ASP.NET WebAPI OWIN实现Self-Host项目实战
引用 寄宿ASP.NET Web API 不一定需要IIS 的支持,我们可以采用Self Host 的方式使用任意类型的应用程序(控制台.Windows Forms 应用.WPF 应用甚至是Windo ...
随机推荐
- GUI按键绑定到键盘和打印组件
首先说明一点 按键绑定到键盘和设置快捷键是不一样的 按键绑定键盘是按键有了和button一样的功能,没有焦点时也能使用(WHEN_IN_FOCUSED_WINDOW),甚至有时候单独作为一个事件(有自 ...
- ComboBox相关操作
取组合框文本示例: 1 void ShowDlgWage::OnCbnSelendokCombo1() { // TODO: 在此添加控件通知处理程序代码 CString str; int i; i ...
- 记一次MySQl 安装1067错误
1.今天阿里云windows server 2008 r2服务器上安装mysql,配置完发现无法启动mysql服务(并发设置的是500),查询windows日志提示 Unknown/unsupport ...
- 转自:http://blog.sina.com.cn/s/blog_86e874d30101e3d8.html(谢谢原文作者),Win7下安装CentOS 6.5双系统
经过一下午的折腾,终于在64位的Windows 7上面成功安装了CentOS 6.5(64bit)系统,中途因为硬盘分区的问题失败了一次.下面是安装过程: 在安装过程中借助了这篇文章的内容:http: ...
- THINK PHP U的用法
public function index(){ //$db=new \Think\Model(); //$db=M('msg'); //$result=$db->query("sel ...
- java include包含指令例子
1.项目架构 2. 代码 (1)top.jsp 2.copyright.jsp 3.index.jsp 4.效果图: 5.总结 期间也碰到过很多问题,例如我刚开始不是创建的java动态项目而是java ...
- oldboy第一天学习
oldboy第一天学习 一.听Alex Li 吹牛逼! 1.老男孩附加的功能.每节课都有鸡汤.节省时间,投资自己.结识更多的朋友. 2.python的创始人为吉多·范罗苏姆(Guido van Ros ...
- C 简单单元测试框架
大约2年前,仿照GTEST写了个简单的C++单元测试框架. http://www.cnblogs.com/imlgc/archive/2012/02/09/2344506.html 后来用C写后台程序 ...
- BZOJ3479: [Usaco2014 Mar]Watering the Fields
3479: [Usaco2014 Mar]Watering the Fields Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 81 Solved: ...
- BZOJ3391: [Usaco2004 Dec]Tree Cutting网络破坏
3391: [Usaco2004 Dec]Tree Cutting网络破坏 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 47 Solved: 37[ ...