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 控制器方法 仅支持一种格式的请求,默认为Get请求,如果其中一个指定Post,其他请求也为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.默认情况下,一个控制器只支持一个Post请求
* 指定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

时间: 2024-12-26 20:31:04

Asp.Net WebAPI Get提交、Post提交处理的相关文章

asp.net webapi 使用小结

一星期前公司用webapi处理一些事情,自己总结一下用法. 1.创建一个空的webapi会默认有一下几个方法. public class ValueController : ApiController { // GET api/value public IEnumerable<string> Get() { return new string[] { "value1", "value2" }; } // GET api/value/5 public st

基于ASP.NET WebAPI OWIN实现Self-Host项目实战

引用 寄宿ASP.NET Web API 不一定需要IIS 的支持,我们可以采用Self Host 的方式使用任意类型的应用程序(控制台.Windows Forms 应用.WPF 应用甚至是Windows Service)作为宿主. 一.摘要 本期同样带给大家分享的是阿笨在实际工作中遇到的真实业务场景,请跟随阿笨的视角去如何实现采用微软的ASP.NET OWIN技术承载WebAPI服务,如果您对本期的教程内容感兴趣,那么请允许让阿笨带着大家一起学习吧! 废话不多说,直接上干货,我们不生产干货,我

Asp.Net WebApi Post请求整理(一)

Asp.Net WebApi+JQuery Ajax的Get请求整理 一.总结 1.WebApi 默认支持Post提交处理,返回的结果为json对象,前台不需要手动反序列化处理.2.WebApi 接收Post提交参数需要指定([FromBody] string name)3.WebApi 中如果只接收一个基础类型参数,不能指定key的名称4.WebApi Post请求Action只能接收一个参数,也就是说一个Action中[FromBody]仅可指定一次5.WebApi Post请求处理多个参数

ASP.NET WebApi OWIN 实现 OAuth 2.0

原文:http://www.cnblogs.com/xishuai/p/aspnet-webapi-owin-oauth2.html OAuth(开放授权)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用. OAuth 允许用户提供一个令牌,而不是用户名和密码来访问他们存放在特定服务提供者的数据.每一个令牌授权一个特定的网站(例如,视频编辑网站)在特定的时段(例如,接下来的 2 小时内)内访问特定的资源(

新站长必备 各大网站收录入口,各大搜索引擎提交, 搜索引擎提交地址

网站建设完成之后,第一件事情就是向各大搜索引擎提交新网站.已更好的分享自己的文章,获取更多的访客. 搜索引擎提交包括提交给搜索引擎爬虫和提交给分类目录. 提交给搜索引擎爬虫的目的是让搜索引擎将网站收录到索引数据库.检验网站是否被搜索引擎收录的办法是直接在搜索引擎中搜索网址,查看能否找到网站结果,也可以通过输入命令”site:hoar.me”获得具体的页面收录数量. 提交给搜索引擎分类目录有两个目的:一是为了用户通过分类目录检索到网站,二是为网站获得一个高质量的外部链接,有助于增加网站的链接广度.

ASP.NET WebAPI 08 Message,HttpConfiguration,DependencyResolver

Message WebAPI作为通信架构必定包含包含请求与响应两个方法上的报文,在WebAPI它们分别是HttpRequestMessage,HttpResponseMessage.对于HttpResponseMessage之前在WebAPI返回结果中有应用. HttpRequestMessage 请求报文包含请求地址(RequestUri),请求方法(Method),头信息(Headers),报文信息(Content)以及Http版本(Versions) public class HttpRe

使用ASP.Net WebAPI构建REST服务(六)——Self-Host

Asp.Net WebAPI生成的是一个程序集,并不是独立的进程,因此,要运行的时候必须将其承载在相应的宿主上,一般比较常见的是IIS承载.很多时候,我们为了简化部署或者功能集成,需要将其承载到独立的进程上,这种方式一般称之为Self-Host,本文就简单的介绍一下WebAPI的SefHost方法. 首先在Nuget上安装Microsoft.AspNet.WebApi.SelfHost库. 附上我们的WebAPI控制器 publicclassValuesController : ApiContr

使用ASP.Net WebAPI构建REST服务(四)——参数绑定

默认绑定方式 WebAPI把参数分成了简单类型和复杂类型: 简单类型主要包括CLR的primitive types,(int.double.bool等),系统内置的几个strcut类型(TimeSpan.Guid等)以及string.对于简单类型的参数,默认从URI中获取. 复杂类型的数据也可以直接作为参数传入进来,系统使用media-type formatter进行解析后传给服务函数.对于复杂类型,默认从正文中获取, 例如,对于如下函数 HttpResponseMessage Put(int

Asp.net WebApi + EF 单元测试架构 DbContext一站到底

其实关于webapi和Ef service的单元测试我以前已经写过相关文章,大家可以参考: Asp.net WebAPI 单元测试 单元测试 mock EF 中DbContext 和DbSet Include 先看一下项目结构图: 这个demo非常简单,UTWebApi.Data 是纯粹的数据定义,UTWebApi.Service是我们的业务服务逻辑层,UTWebApi 是我们webapi的实现,UTWebApi.Tests就是测试项目. 数据层: BloggerDbContext的构造函数一般

使用ASP.Net WebAPI构建REST-ful 服务(一)——简单的示例

由于给予REST的Web服务非常简单易用,它越来越成为企业后端服务集成的首选方法.本文这里介绍一下如何通过微软的Asp.Net WebAPI快速构建REST-ful 服务. 首先创建一个Asp.Net Web应用程序(我这里用的是Visual Studio 2013,它已经内置了Web API2). 在出来的模板中选择Empty(空项目),并勾选WebAPI.点击确定后,就创建了一个空的WebAPI服务. 此时只有一个空项目,还没有任何功能,在进行下一步之前,首先我们来看一下REST的基本操作模