ASP.NET Web API 教程

2024 年 11 月 14 日 | 11 分钟阅读
Asp.Net Web Api Tutorial

在本教程中,我们将讨论以下主题

ASP.NET Web API 教程提供了 ASP.NET 的基本和高级概念。我们的 ASP.NET 教程专为初学者和专业人士设计。

什么是 Web API?

  • Web API 是 Web 应用程序的增强形式,可在不同的设备(如笔记本电脑、手机等)上提供服务。
  • 如今,所有类型的企业都将互联网用作一种具有成本效益的方式,以在国际市场上扩展其业务。
  • Web 应用程序有助于在互联网上交换信息,也有助于在网站上执行安全交易。
  • Web 应用程序很受欢迎,因为 Web 浏览器是默认可用的,我们不需要在具有操作系统的计算机上安装任何软件。
  • 例如,Facebook(社交网络 Web 应用程序)、Flickr(照片共享 Web 应用程序)和 Wikipedia 是 Web 应用程序的主要示例。
  • 从技术上讲,Web 应用程序由两种类型的脚本组成

1) 客户端脚本: JavaScript、HTML 和其他客户端脚本语言用于设计 Web 表单,以向用户呈现信息。

2) 服务器端脚本: ASP 和其他服务器端脚本语言用于执行业务逻辑和数据库相关操作,如存储和检索信息。

  • Web 应用程序是人-系统交互
  • 它可以是仅提供某些业务信息的单页应用程序,也可以是用于从用户那里获取某些信息并向用户提供服务的网页集合。

谁使用 API?

这些服务可以被不同类型的用户访问,例如

  • Web 浏览器
  • 移动应用程序
  • 桌面应用程序
  • 物联网(物联网)

ASP.NET Web API

API 代表应用程序编程接口

"ASP.NET Web API 是一个可扩展的框架,用于构建 HTTP(超文本传输协议)服务,这些服务可以从任何客户端(如浏览器和移动设备)访问。"

例如,我们从不同的 Web 应用程序(如 MakeMyTrip、Ixigo 或 Paytm 和所有其他预订 Web 应用程序)进行预订,但所有应用程序都使用 IRCTC 网站的凭据进行预订,即用户执行预订必须具有 IRCTC 网站的登录凭据。

这些服务可以被不同类型的用户访问,例如

  • Web 浏览器
  • 移动应用程序
  • 桌面应用程序
  • 物联网(物联网)

当应用程序要在分布式系统上使用时,可以使用 Web API 服务。

Web API 从不同类型的客户端设备(如移动设备、笔记本电脑等)获取请求,并将它们发送到 Web 服务器进行处理,并将所需的数据返回给客户端。

Asp.Net Web Api Tutorial

使用不同类型 API 的自定义 Web 应用程序

Web API 是系统-系统交互,其中来自一个系统的信息由另一个系统处理,并将结果数据显示给查看者。

让我们从 Web API 示例中再举一个例子,我们想要麦当劳的汉堡。

让我们假设麦当劳只允许厨师外卖,而不允许其他人。这里 McDonalds-Takeaways(厨师)就像一个 API,它允许其他系统(厨师)访问服务并提供所需的数据。


ASP.NET Web API 的特性

1) ASP.NET Web API 与 ASP.NET MVC 非常相似。

2) 它包含与 ASP.NET MVC 类似的特性,例如

  • 路由
  • 控制器
  • 操作结果
  • Filter
  • 模型等

3) 存在一种误解,即 ASP.NET Web API 是 ASP.NET MVC 框架的一部分,但它可以与任何其他类型的 Web 应用程序一起使用。

4) 可以使用 Web API 开发独立的 Web 服务。

5) ASP.NET Web API 框架被广泛用于开发 RESTful 服务。


RESTful 服务

  • Web API 是 Web 应用程序的增强形式。
  • SOAP(简单对象访问协议) 是一种基于 XML 的协议,用于开发连接的 Web 应用程序。
  • SOAP 的问题在于,对于每个请求,元数据都附加到要传输的数据中。
  • 此元数据将小数据转换为服务器上的大数据。
  • Web API 可能是或可能不是 RESTful 服务,但它们始终是基于 HTTP 的服务。
  • REST 代表 Representational State Transfer(表述性状态转移)
  • 在 REST API 中,只有对象的状态被发送到服务器以找到所需的结果。
  • REST 是开发使用 HTTP 作为其底层通信方法的 API 的一种架构模式

当我们使用基于 HTTP 的服务时,例如 BookMyShow 应用程序,我们需要以托管形式(如 JSON 格式、XML 格式)获取数据。

客户端通过使用 API 方法发送参数来请求信息。

Asp.Net Web Api Tutorial

例如,如果我们想预订一场演出,我们想知道城市、电影名称、地点、时间等详细信息。我们将把对象的状态发送到 Web 服务器,API 将检查数据是否可用。

如果数据可用(该实例可以获得该电影),则它将向客户端发送带有对象的响应。

将对象的值发送给客户端,即基本上是对象的状态发送给客户端,因此每次您不必创建对象。

"REST API 是一种架构风格,也是一种用于通信目的的方法,通常用于各种 Web 开发。"

它是一个无状态的客户端-服务器模型。

Asp.Net Web Api Tutorial

REST API 的原则

REST API 的六个原则是

  1. 无状态
  2. 客户端-服务器
  3. 统一接口
  4. 可缓存
  5. 分层系统
  6. 按需代码

1) 无状态:当来自客户端的请求被发送到服务器时,它包含处理服务器所需的所有信息。 请求可能是 QueryString 或 URL 的一部分。

例如,假设资源是从 URL(统一资源定位符)请求的。

Asp.Net Web Api Tutorial

2) 客户端-服务器:分离功能有助于提高跨多个平台的用户界面可移植性,并扩展服务器组件的可伸缩性。

3) 统一接口:为了在整个应用程序中获得统一性,REST 定义了四个接口约束,它们是

  • 资源标识
  • 使用表示的资源操作
  • 自描述的消息
  • 以及作为 Web 应用程序引擎的超媒体

4) 可缓存:为了提供更好的性能,应用程序是可缓存的。 这是通过隐式或显式地将响应标记为可缓存或不可缓存来实现的。 如果资源被定义为可缓存的,则客户端缓存可以为等效请求重用响应数据。

5) 分层系统:分层系统允许应用程序通过限制组件行为来保持最稳定。 分层架构还有助于增强安全性,因为每一层的组件无法与其所在的每一层之外进行交互。

6) 按需代码:可选且最少使用的约束。 通过创建不依赖于自身代码结构的智能应用程序来分析和简化客户端。


REST API 的方法

  • 在 Web 技术上工作时,我们处理 CRUD 应用程序。
  • 在这些应用程序中,CRUD 用于创建、读取、更新和删除资源。
  • 在这里,资源被定义为所需的结果。 例如:https://in.bookmyshow.com/noida/movies
  • 在上面的例子中,用户正在寻找 bookmyshow 应用程序中诺伊达市的电影,因此资源是客户正在寻找的数据。
  • 要执行这些操作,例如创建资源、读取资源、更新资源或删除资源,我们也可以使用 HTTP 方法,也称为 REST 方法。

现在,基本的 CRUD 操作以以下方式映射到 HTTP 协议

CRUD 方法REST API 方法描述
创建POST方法指的是 CRUD 的 C (创建) 部分。
它用于创建资源。
读取GET方法指的是 CRUD 的 R (检索) 部分。
它用于读取资源。
更新PUT方法指的是 CRUD 的 U (更新) 部分。
它用于更新资源。
删除DELETE方法指的是 CRUD 的 D (删除) 部分。
它用于删除资源。
  • REST API 最适用于分布式系统。
  • 分布式数据库在任何地方都使用,数据库存储数据,其上执行 CRUD(创建、检索、更新和删除)操作。

所以让我们举一个从资源中获取一些菜肴的例子

www.testwebsite.com/dishes

现在,让我们假设我们想从资源中获取一些特定的菜肴

www.testwebsite.com/dishes/2


实现 REST API 简单应用程序

让我们为学生创建一个 REST API 服务。

  • 首先打开 Visual Studio(这里我们有 Visual Studio 2019)。
  • 现在选择创建新项目:
Asp.Net Web Api Tutorial
  • 现在选择模板 ASP.NET Web Application (.NET Framework),使用 C# 并将项目命名为 "WebApiStudentsSample"。
Asp.Net Web Api Tutorial
  • 在 ASP.NET 项目对话框中,选择空模板,并勾选Web API选项。 单击确定
Asp.Net Web Api Tutorial
  • 将生成一个默认结构,如下所示
Asp.Net Web Api Tutorial

将 Student.cs 类添加到 Models 文件夹

  • 添加一个名为 "Student" 的类以定义属性和其他业务逻辑。 我们还可以定义其他逻辑,如验证、数据访问等。
  • 右键单击 Models,选择 Add 选项,然后选择 Class,并为该类命名为 "Student.cs"
Asp.Net Web Api Tutorial

添加以下代码以定义学生类的属性

将 StudentControllers.cs 类添加到 Controllers 文件夹

  • 控制器类处理来自客户端的 HTTP 请求,客户端可以是桌面应用程序、移动设备和浏览器。
  • 右键单击控制器,选择 Add 选项,然后选择 'Controller..'。
Asp.Net Web Api Tutorial

将打开添加 Scaffold 窗口,然后选择 Web API2 Controller ?Empty 模板。

Asp.Net Web Api Tutorial
  • 选择 Scaffolding 模板后,将打开添加控制器窗口,并为该类命名为 "StudentController"。
Asp.Net Web Api Tutorial

注意:我们可以看到控制器类继承了 System.Web.Http.ApiController 类而不是 Controller 类。

  • Scaffoldingcontroller 文件夹内创建了一个 "StudentController.cs" 类。

现在实现方法以执行 CRUD 操作。 让我们假设我们想要所有学生详细信息以及某些特定学生的详细信息。

现在添加以下代码

StudentController 类控制器中,您可以看到方法 "GetAllStudents" 返回所有学生的列表,而方法 "GetStudentDetails" 返回单个 student 的详细信息。

在下表中,您可以了解控制器如何使用路由 URL 执行 CRUD 操作。

控制器方法路由 URI(统一资源标识符)
GetAllStudents/api/ student
GetStudentDetails/api/ student /id

运行 Web API

要运行 Web API,首先按 F5 或 Ctrl+F5 或单击 IIS express 运行图标,然后浏览器将打开,网址类似于 https://:44329/

现在要查找所有学生的列表,将 URL 编辑为 https://:44329/api/student

Asp.Net Web Api Tutorial

要获取单个学生的详细信息,将 URL 编辑为

https://:44329/api/student/2

Asp.Net Web Api Tutorial

Web API 的需求

  • Web API 有助于从不同的互联网设备(如浏览器、移动应用程序和其他设备)访问服务数据。
  • 有助于处理 RESTful Web 服务。
  • 有助于开发轻量级且可维护的 Web 服务。
  • 用于创建两种类型的服务:RESTful 和非 RESTful 服务。
  • 还支持 JSON、XML 和其他数据格式。
  • 有助于开发支持 HTTP 服务所有功能的服务,例如 缓存、请求/响应标头、版本控制 等。

MVC 与 Web API

ASP.NET API 和 ASP.NET MVC 之间的区别如下

MVCWeb API
有助于开发处理请求并发送视图和数据的 Web 应用程序。有助于开发处理请求并且仅返回数据(而不是视图)的 HTTP 服务(RESTful 和非 RESTful 服务)。
使用 JsonResult 以 JSON 格式表示结果数据。以特定格式(如 JSON、XML 或任何其他格式)返回数据
请求被映射到操作名称。请求被映射到 Web API 中的 HTTP 动词
模型绑定、路由和其他功能在 System.Web.Mvc 中定义。Web API 中也提供了相同的功能,这些功能在 System.Web.Http 程序集中定义。
MVC 通常与视图交互以提供最终输出支持内容协商功能,即确定与客户端计算机兼容的响应数据的最佳格式。

Web API 与 WCF

ASP.NET WCF 和 ASP.NET Web API 之间的区别如下

特性Web APIWCF
内容格式Web API 支持任何媒体格式,如 XML、JSON 等。WCF 支持基于 SOAP 的服务和 XML 格式。
托管Web API 支持 IIS 托管,自托管WCF 支持工作激活服务以及 IIS 托管,自托管。
MVC 功能ASP.NET Web API 支持类似于 MVC 的功能,如控制器、路由、操作等。与 MVC 一样,WCF 不提供任何功能,如控制器、路由、过滤器、拍卖结果等。
协议Web API 支持 HTTP 协议。支持 UDP、HTTP 和自定义传输协议。
模型的使用使用 HTTP 动词作为称为 CRUD 操作的方法ServiceContract 属性定义一个包含操作的服务契约。
OperationContract 属性定义将使用的操作。
DataContract 属性定义将在各方之间传输的属性或类型。

Web API 与 Web Services

Web API 和 Web 服务之间的区别如下

特点Web APIWeb 服务
托管在应用程序或 IIS 中完成托管。在 IIS 上完成托管。
开源Web API 是开源的,任何支持 JSON 或 XML 的客户端都可以使用它。Web 服务不是开源的,但任何支持 XML 的客户端都可以使用它。
架构Web API 是轻量级架构,适用于带宽有限的设备,如移动设备。它需要 SOAP 协议才能通过网络接收和发送数据,因此它不是轻量级架构。
协议它支持 HTTP 协议:URL、请求/响应标头、版本控制、缓存、内容格式。它仅支持 HTTP 协议。

Web API 安全性

ASP.NET Web API 身份验证和授权是 Web API 安全性的重要概念。

假设创建了一个 Web API,并且对 API 的访问仅限于某些特定用户,并且不同的用户可以使用不同的操作。

  • 身份验证用于验证用户的凭据并识别他们。
    例如,用户使用他的用户名和密码登录,服务器通过密码对用户进行身份验证。
  • 授权用于定义每个用户执行不同操作的访问级别。
    例如,允许一个人创建资源,但不允许删除记录。

如果 Web API 中的请求需要身份验证,但客户端未在请求标头中提供凭据,则服务器将返回 401(未授权)


前提条件

在学习 Web API 之前,用户必须具备 Http 方法、C# 属性的基本知识,并且具有 MVC 的知识将是一个加分项。

目标受众

本教程适用于初学者和专业人士,以学习 Web API 和 RESTful 服务。

问题

本教程使用简单易懂的语言,如果仍然有任何困惑,请在联系表格中发布疑问。