Web Api简单用法

简介: ASP.NET MVC 4 包含了 ASP.NET Web API, 这是一个创建可以连接包括浏览器、移动设备等多种客户端的 Http 服务的新框架, ASP.NET Web API 也是构建 RESTful 服务的理想平台。
+关注继续查看

ASP.NET MVC 4 包含了 ASP.NET Web API, 这是一个创建可以连接包括浏览器、移动设备等多种客户端的 Http 服务的新框架, ASP.NET Web API 也是构建 RESTful 服务的理想平台。
使用前请安装AspNetMVC4Setup.exe文件,可在微软网站下载;
AspNetMVC4Setup.exe安装

ASP.NET Web API 包含下列特性:
1、先进的 HTTP 编程模型: 使用新的强类型的 HTTP 对象模型直接操作 HTTP 请求和响应, 在 HTTP客户端使用相同的编程模型和 HTTP 管道;
2、支持路由: Web API 完整支持 ASP.NET 路由, 包括路由参数和约束。 此外, 到动作的映射支持约定, 从此将不再需要向类或者方法添加类似于 [HttpPost] 之类的属性;
3、内容协商: 客户端与服务端可以一起决定 API 返回数据的格式。 默认支持 XML, JSON 以及 Form URL-Encoded 格式, 可以扩展添加自定义格式, 甚至可以替换掉默认的内容协商策略;
4、模型绑定与验证: 模型绑定器可以轻易地从 HTTP 请求中提取数据并转换成在动作方法中使用的 .Net 对象;
5、过滤: Web API 支持过滤, 包括总所周知的 [Authorize] 过滤标记, 可以为 Action 添加并插入自定义过滤, 实现认证、异常处理等;
6、查询聚合: 只要简单的返回 Iqueryable , Web API 将会支持通过 OData 地址约定进行查询;
7、改进的 Http 细节可测试性: Web API 不是将 HTTP 细节设置到一个静态的 Context 对象上, 而是使用 HttpRequestMessage 和 HttpResponseMessage 实例, 可以使用这些对象的泛型版本为这些 Http 类型添加自定义类型;
8、改进的依赖反转 (IoC) 支持: Web API 使用 MVC Dependency Resolver 实现的服务定位器模式在不同的场景下来获取实例;
9、基于代码的配置: Web API 单独使用代码完成配置, 从而保证了配置文件的整洁;
10、自托管 (Self-Host) : Web API 除了可以托管在 IIS 中, 还可以托管在进程中,依旧可以使用路由以及其它的特性。

在Visual Studio 2012中新建MVC4项目,在App_Start目录下有一个WebApiConfig.cs文件,这个文件中就是相应的Web API的路由配置了。

添加Web API 项目:
Web Api创建

添加WPI API控制器类
添加WPI API控制器类

先创建了一个UserModel;

public class UserModel
{
    public string UserID { get; set; }
    public string UserName { get; set; }
}

然后添加Web API Controller

public class UserController : ApiController
{
    public UserModel getAdmin()
    {
        return new UserModel() { UserID = "000", UserName = "Admin" };
    } 
}

注册路由

public static void Register(HttpConfiguration config)
{
    config.Routes.MapHttpRoute(
        name: "DefaultApi",
        routeTemplate: "api/{controller}/{id}",
        defaults: new { id = RouteParameter.Optional }
    );
}

在Global中注册

protected void Application_Start(object sender, EventArgs e)
{
 WebApiConfig.Register(GlobalConfiguration.Configuration);
}

这个时候用地址栏访问地址:api/user/getadmin
Web API`

这个时侯默认返回的是XML数据模型。

使用AJAX请求这个api,指定数据格式为json;

$.ajax({
    type: 'GET',
    url: 'api/user/getadmin',
    dataType: 'json',
    success: function (data, textStatus) {
        alert(data.UserID + " | " + data.UserName);
    },
    error: function (xmlHttpRequest, textStatus, errorThrown) {
    }
});

alert出来的结果是:

Web API

可以根据请求的数据类型返回指定的数据格式。

修改一下controller,添加一个add方法

public bool add(UserModel user)
{
    return user != null;
}

只为了测试,所以这里只判断一下传入的实体是否为空,如果不为空则返回true

我在页面上添加了一个button,代码如下:

<input type="button" name="btnOK" id="btnOK" value="发送POST请求" />

添加JS代码

$('#btnOK').bind('click', function () {
    //创建ajax请求,将数据发送到后台处理
    var postData = {
        UserID: '001',
        UserName: 'QeeFee'
    };
    $.ajax({
        type: 'POST',
        url: 'api/user/add',
        data: postData,
        dataType: 'json',
        success: function (data, textStatus) {
            alert(data);
        },
        error: function (xmlHttpRequest, textStatus, errorThrown) {
        }
    });
});

再次运行页面
Web API
我们附加进程进行调试,在发送ajax请求的时候,服务器段接收到的数据如图:
Web API

目录
相关文章
|
1天前
|
前端开发 Python
Python float(input())的用法,web中的应用
要理解Python中的float(input()),可以分两部分。第一,input()用于获取键盘上的输入,该函数的返回值是一个Python字符串str类型的数据——不过输入的是什么;第二,float()函数用于将传递的参数——这里就是input()的返回值,一个字符串——转换为float浮点数的类型。float()函数转换input()的返回值相对于使用int()可以保留相应的精度。
10 1
|
2月前
|
前端开发 UED
关于 Web 应用的内联 css 和 scss 文件里的 var 关键字用法
关于 Web 应用的内联 css 和 scss 文件里的 var 关键字用法
38 0
|
6月前
|
缓存 前端开发 算法
web前端面试高频考点——Vue3.x深入理解(v-model参数用法、watch和watchEffect区别、Vue3快于Vue2、Vite启动快的原因)
web前端面试高频考点——Vue3.x深入理解(v-model参数用法、watch和watchEffect区别、Vue3快于Vue2、Vite启动快的原因)
149 0
|
存储 前端开发 JavaScript
Web前端学习:JaveScript基础 [简介、用法、变量及数据类型、流程控制及函数] (附源代码)
Web前端学习:JaveScript基础 [简介、用法、变量及数据类型、流程控制及函数] (附源代码)
196 0
Web前端学习:JaveScript基础 [简介、用法、变量及数据类型、流程控制及函数] (附源代码)
|
XML 前端开发 JavaScript
Java Web入门之Ajax的用法详解(附代码和实战)
Java Web入门之Ajax的用法详解(附代码和实战)
310 0
|
前端开发
web自动化之selenium的特殊用法(二)
文章目录 web自动化之selenium的特殊用法(二) selenium-键盘操作,keys的的使用 (1)keys包的导入 (2)组合键使用 (4)常用组合键 (5)常用功能键 Python-Selenium:如何通过click在新的标签页打开链接? selenium 带有空格的class name且不唯一的元素定位
108 0
|
JavaScript
web自动化之selenium的特殊用法(一)
文章目录 web自动化之selenium的特殊用法(一) 1、get_attribute() 2、js滚动页面 3、Tab键点击页面未展示元素 4、通过空格键执行页面滚动操作 1.摁空格键 2.报错:TypeError: list indices must be integers or slices, not WebElement ———————————————— 版权声明:本文为CSDN博主「梦无矶」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/qq_46158060/article/details/
196 0
|
前端开发
web自动化之selenium的特殊用法(二)
selenium-键盘操作,keys的的使用 如何通过click在新的标签页打开链接? selenium 带有空格的class name且不唯一的元素定位
120 0
|
JavaScript
web自动化之selenium的特殊用法(一)
web自动化之selenium的特殊用法(一)
110 0
|
Web App开发
Web蓝牙打印Demo以及Webbluetooth的用法
Web蓝牙打印Demo以及Webbluetooth的用法
694 0
相关产品
云迁移中心
推荐文章
更多