Asp.Net WebAPI Get提交、Post提交处理

摘要:
1.启用跨域提交˂/system

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=11},
    };
    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提交处理》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇unity——UI拖拽实现拼图【刷题】洛谷 P4234 最小差值生成树下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Moco模拟服务器post&amp;amp;get请求 (二)

1、moco启动命令如下:java -jar moco-runner-0.12.0-standalone.jar 协议类型 -p 端口号 -c json配置文件 2、带参数的get请求 [ { "request":{ "method":"get", "uri":"/api/get_event_list", "queri...

.net webapi后台返回pdf文件流,前端ajax请求下载,空白pdf排错经历

.net webapi后台返回pdf文件流,前端ajax请求下载,空白pdf排错经历 先上代码: 后台webapi代码: [HttpGet] [Route("{manifestId}")] public IHttpActionResult FindManifestPdfById([FromUri]string manifestId) {     byte...

EntityFramework Core 学习扫盲

0. 写在前面 1. 建立运行环境 2. 添加实体和映射数据库 1. 准备工作 2. Data Annotations 3. Fluent Api 3. 包含和排除实体类型 1. Data Annotations [NotMapped] 排除实体和属性 2. Fluent API [Ignore] 排除实体和属性 4. 列名称和类型映射1...

SQL Server存储过程模拟HTTP请求POST和GET协议

/****** Object: StoredProcedure [dbo].[sp_http_get] Script Date: 05/23/2020 15:47:09 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE PROCEDURE [dbo].[sp_htt...

[转] Asp.net vNext webapi 自托管

【声明】本文转自:http://www.cnblogs.com/ListenCode/p/4206204.html 转载需注明! 微软推出的Asp.net vNext(asp.net 5.0)的其中的一个目标就是统一mvc 和web api 的框架。接下来我就演示一下一下几个内容 1,怎么在Asp.net mvc 6 中创建简单的web api。 2,怎么...

基于Boost库的HTTP Post函数

两个函数的区别: 提交表单数据和提交文本数据 表单数据: request_stream << "Content-Type: application/x-www-form-urlencoded "; 文本数据: request_stream << "Content-Type: text/html "; #include <i...