当前位置:首页 > Windows程序 > 正文

Web API 强势入门指南

2021-03-24 Windows程序

Web API是一个比较宽泛的概念。这里我们提到Web API特指ASP.NET Web API。

这篇文章中我们主要介绍Web API的主要功能以及与其他同类型框架的对比,最后通过一些相对复杂的实例展示如何通过Web API构建http服务,同时也展示了Visual Studio构建.net项目的各种强大。

什么是 Web API

为什么要用 Web API

功能简介

Web API vs MVC

Web API vs WCF

Web API 集成 MongoDB

涉及技术

服务URI Pattern

准备工作

代码实现

官方定义如下,强调两个关键点,即可以对接各种客户端(浏览器,移动设备),构建http服务的框架。

ASP.NET Web API is a framework that makes it easy to build HTTP services that reach a broad range of clients, including browsers and mobile devices. ASP.NET Web API is an ideal platform for building RESTful applications on the .NET Framework.

Web API在ASP.NET完整框架中地位如下图,与SignalR一起同为构建Service而服务的框架。Web API负责构建http常规服务,而SingalR主要负责的是构建实时服务,例如股票,聊天室,在线游戏等实时性要求比较高的服务。

技术分享

Web API最重要的是可以构建面向各种客户端的服务。另外与WCF REST Service不同在于,Web API利用Http协议的各个方面来表达服务(例如 URI/request response header/caching/versioning/content format),因此就省掉很多配置。

技术分享

当你遇到以下这些情况的时候,就可以考虑使用Web API了。

Web API的主要功能

1. 支持基于Http verb (GET, POST, PUT, DELETE)的CRUD (create, retrieve, update, delete)操作

通过不同的http动作表达不同的含义,这样就不需要暴露多个API来支持这些基本操作。

2. 请求的回复通过Http Status Code表达不同含义,并且客户端可以通过Accept header来与服务器协商格式,例如你希望服务器返回JSON格式还是XML格式。

3. 请求的回复格式支持 JSON,XML,并且可以扩展添加其他格式。

4. 原生支持OData。

5. 支持Self-host或者IIS host。

6. 支持大多数MVC功能,例如Routing/Controller/Action Result/Filter/Model Builder/IOC Container/Dependency Injection。

你可能会觉得Web API 与MVC很类似,他们有哪些不同之处呢?先上图,这就是他们最大的不同之处。

技术分享

详细点说他们的区别,

MVC主要用来构建网站,既关心数据也关心页面展示,而Web API只关注数据

Web API支持格式协商,客户端可以通过Accept header通知服务器期望的格式

Web API支持Self Host,MVC目前不支持

Web API通过不同的http verb表达不同的动作(CRUD),MVC则通过Action名字表达动作

Web API内建于ASP.NET System.Web.Http命名空间下,MVC位于System.Web.Mvc命名空间下,因此model binding/filter/routing等功能有所不同

最后,Web API非常适合构建移动客户端服务

发布服务在Web API和WCF之间该如何取舍呢?这里提供些简单地判断规则,

如果服务需要支持One Way Messaging/Message Queue/Duplex Communication,选择WCF

如果服务需要在TCP/Named Pipes/UDP (wcf 4.5),选择WCF

如果服务需要在http协议上,并且希望利用http协议的各种功能,选择Web API

如果服务需要被各种客户端(特别是移动客户端)调用,选择Web API

ASP.NET网站上有很多简单的Web API实例,看看贴图和实例代码你就明白怎么用了。这里我们通过一个稍微复杂一点的实例来展示下Web API的功能。

涉及技术

在我们的实例里面用到了:

服务URI Pattern

Action Http verb URI Get contact list GET /api/contacts Get filtered contacts GET /api/contacts?$top=2 Get contact by ID GET /api/contacts/id Create new contact POST /api/contacts Update a contact PUT /api/contacts/id Delete a contact DELETE /api/contacts/id

准备工作

1. 下载并安装Mongo DB,步骤看这里。

2. Mongo DB C# driver下载可以在nuget搜索mongocsharpdriver。

3. 如果想本地察看数据库中内容,下载MongoVUE。

4. Knockoutjs下载可以在nuget搜索knockoutjs。

代码实现

1. 创建项目

创建MVC4 Web Application

技术分享

在Project Template中选择Web API

技术分享

然后项目就创建成了,Controllers里面有一个ValuesController,是自动生成的一个最简单的Web API Controller。

正如我们前面所说,里面引用的是System.Web.Http命名空间。

技术分享

2. 创建model

在model里面添加Contact类

技术分享

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/66603.html