在本文中,我将简要介绍 ASP.NET Core Web API 框架。阅读完本文后,您将了解以下几点:
什么是 Web API?API 代表应用程序编程接口。Web API 是一个概念(不是一项技术),它基于 HTTP 协议工作,用于扩展应用程序的功能。Web API 或 Web 应用程序编程接口是一组规则和协议,允许不同的软件应用程序通过互联网或网络相互通信。它通过使用 HTTP(超文本传输协议)作为通信协议,使得各种系统之间可以交换数据和功能。
什么是ASP.NET Core Web API?API 代表应用程序编程接口。ASP.NET Core Web API 是 Microsoft 提供的一个框架,便于构建基于 HTTP 的服务,即 Web API。ASP.NET Core Web API 非常适合在 .NET 平台之上构建 Restful 服务,这些 Web API 服务随后可以被多种客户端消费,如浏览器、移动应用、桌面应用、物联网等。ASP.NET Core Web API 通常用于构建暴露数据和服务的 RESTful API,适用于多种场景,包括为 Web、移动和桌面应用构建后端服务,为单页应用(SPA)提供数据,以及创建可以独立部署的微服务。
为什么需要ASP.NET Core Web API?如今,仅有 Web 应用程序已不足以触及所有客户。人们变得非常聪明;他们在日常生活中使用各种设备,如移动设备、iPhone、平板等。这些设备上有很多应用程序使他们的生活变得更加便捷。简而言之,我们可以说我们正从 Web 世界转向应用程序世界。因此,如果我们想以一种快速、安全和简单的方式将我们的数据(业务数据)暴露给浏览器和所有这些现代设备上的应用程序,那么我们应该拥有一个与浏览器和所有这些现代设备兼容的 API。
ASP.NET** Core Web API 的特点:**以下是我们将在本课程中讨论的 ASP.NET Core Web API 的一些关键特性:
跨平台支持: .NET Core Web API 可以在 Windows、Linux 和 macOS 上运行,使您的 Web API 平台无关。性能: .NET Core 设计上具有更小的内存占用和提升的性能,优化了现代云应用。路由: 支持属性路由,允许开发 SEO 友好的 URL。模型绑定和验证: 自动将 HTTP 请求中的数据映射到动作方法参数。模型验证也是自动进行的,任何验证错误都可以处理并返回给客户端。依赖注入: 内置支持依赖注入(DI),这允许更模块化和可测试的代码。中间件支持: .NET Core 的中间件管道使您可以添加检查和处理 HTTP 请求/响应的组件,允许自定义处理,如身份验证、日志记录、加密解密等。内容协商和序列化: 根据客户端偏好和服务器能力,自动将您的数据序列化为 JSON、XML 或其他格式。版本控制: 支持 API 版本控制,这对于处理新客户端和新 API 而不破坏现有客户端非常重要。OpenAPI/Swagger 支持: 提供内置支持生成您的 API 的 OpenAPI(以前称为 Swagger)描述,这可以用来生成美观的交互式文档、客户端 SDK 生成等。安全性: 支持包括 OAuth 2.0、基本认证、HMAC、JWT(JSON Web Tokens)等在内的认证和授权机制,以保护您的 web API。可测试性: 设计支持单元测试。您可以像测试任何其他 ASP.NET Core 应用程序一样测试您的 API。可扩展性: 高度可扩展和可定制,以满足各种需求,从自定义过滤器到新的序列化格式。集成配置系统: Web API 可以从各种来源读取应用配置数据,如 JSON 文件、环境变量等。基于环境的配置: 支持开发、测试和生产环境,允许每个环境有不同的配置。什么是 Rest?REST 代表表现层状态转移。这是一种用于在分布式环境中交换数据的架构模式。在 REST 中,有所谓的客户端和服务器,数据将在分布式环境中的客户端和服务器之间交换。分布式环境意味着客户端可以在任何平台上,如 Java、.NET、PHP 等;服务器也可以在任何平台上,如 Java、.NET、PHP 等。REST 架构模式将每个服务视为资源,客户端可以使用 HTTP 协议方法如 GET、POST、PUT、PATCH 和 DELETE 来访问这些资源。
REST 原则是什么?REST 架构模式规定了系统应遵循的一组约束。这里是 REST 约束或原则:
客户端-服务器约束:这个约束指定客户端发送请求到服务器,服务器返回响应给客户端。这种关注点的分离支持客户端和服务器端逻辑的独立开发。这意味着客户端应用和服务器应用应该分别开发,彼此之间没有依赖。客户端只需要知道资源 URI,就是这些。
无状态约束:无状态约束指定客户端和服务器通信必须是无状态的。这意味着服务器不应在服务器上存储与客户端相关的任何东西。客户端的请求应包含所有必要的信息,以便服务器能够识别客户端并处理该请求。这确保了服务器可以独立处理每个请求。
可缓存约束:在实时应用中,服务器提供的一些数据不会频繁更改,如国家列表、州列表、城市列表和一些主数据。RESTful API 可以利用 HTTP 缓存机制。响应可以包括缓存指令,以启用客户端缓存,减轻服务器负载并提高性能。
统一接口约束:统一接口约束定义了客户端和服务器之间的接口。资源使用标准数据格式表示,如 JSON 或 XML。要理解统一接口约束,首先我们需要了解什么是资源以及 HTTP 动词如 GET、PUT、POST、PATCH 和 DELETE。
在 RESTFUL 服务的上下文中,资源通常代表数据实体。产品、员工、客户、国家、州、城市等都是资源。每个请求发送的 HTTP 动词(GET、PUT、POST、PATCH 和 DELETE)告诉 API 应该对资源做什么。每个资源都通过特定的 URI(统一资源标识符)来识别。
内容协商:REST 服务的一个约束是客户端应该能够决定他们希望以哪种格式接收响应——他们是否希望响应以 XML 或 JSON 等格式。这称为内容协商。
分层系统:RESTful 架构可以由多个层组成,每个层提供特定功能。例如,REST 允许我们使用分层系统架构,在服务器 A 部署 API,在服务器 B 存储数据,并在服务器 C 认证请求。客户端无法简单地判断它是直接连接到服务器还是通过途中的中介连接。这允许可扩展性、关注点分离和易于维护。
通过遵循这些原则,RESTful Web API 提供了一种标准且可扩展的方法来设计和开发 web 服务。它们促进了客户端和服务器之间的松散耦合,使得与各种平台和技术的集成变得容易。RESTful API 在 web 和移动应用开发中广泛使用,使客户端能够以灵活高效的方式与服务器资源进行交互。
REST与SOAP服务之间的区别是什么?让我们讨论一下REST和SOAP服务之间的区别:
SOAP代表简单对象访问协议,而REST代表表现层状态转移。SOAP是基于XML的协议,而REST不是协议。相反,它是一种架构模式,即基于资源的架构。SOAP具有无状态和有状态的实现规范,而REST完全是无状态的。SOAP强制使用XML消息格式,而REST不强制使用XML或JSON消息格式。SOAP消息包含一个信封,其中包含SOAP头和一个主体来存储我们想要发送的信息。相比之下,REST使用HTTP内置头(带有各种媒体类型)来存储信息,并使用HTTP方法如GET、POST、PUT、PATCH和DELETE执行CRUD操作。SOAP是基于操作的,服务作为操作暴露,而REST是基于资源的,服务作为URL标识的资源暴露。REST更加灵活,并且由于其无状态的本质和对更广泛的数据格式的支持,性能更好。SOAP由于其结构严格和XML格式,性能较慢。SOAP的性能比REST慢。REST通常被认为更易于使用,并且在现代Web服务应用程序中更常用,特别是对于公共API。ASP.NET** WebAPI与ASP.NET Core Web API之间的区别是什么?**ASP.NET Web API和ASP.NET Core Web API代表了ASP.NET框架内构建Web API(Restful服务)的两种不同方法,具有几个关键区别:
平台支持ASP.NET** Web API专为Windows平台和.NET Framework设计。**另一方面,ASP.NET** Core Web API是跨平台的,可以在Windows、macOS或Linux上运行,使其在开发和部署环境方面更具多样性。**框架和运行时ASP.NET** Web API建立在.NET Framework上。**ASP.NET** Core Web API使用.NET Core运行时,这是一个更模块化和轻量级的框架。**性能ASP.NET** Core Web API以比ASP.NET Web API更高的性能而闻名。这部分归功于ASP.NET Core的优化代码路径、减少的内存占用和其他性能改进。**开发工具ASP.NET** Core Web API可以使用各种工具开发,如Visual Studio、Visual Studio for Mac或Visual Studio Code,并支持C#或F#。**ASP.NET** Web API的开发主要在Visual Studio中使用C#、VB或F#进行。**API设计在ASP.NET** Core中,MVC 6结合了MVC和Web API的功能,允许控制器返回视图(HTML)和数据对象(例如,JSON)。这种统一简化了开发过程。**ASP.NET** Web API更专注于创建REST API,并没有像MVC那样无缝集成功能。**托管ASP.NET** Core Web API可以在IIS、Kestrel、Docker、Linux、macOS和Windows上托管,提供更多的灵活性。**ASP.NET** Web API通常托管在Internet Information Services (IIS)上,但也可以自托管。**依赖注入ASP.NET** Core Web API提供了全面的依赖注入(DI)支持。**ASP.NET** Web API本身对依赖注入的支持有限。经常需要使用第三方库,如Autofac或Ninject,以满足更复杂的场景。**中间件ASP.NET** Core Web提供了强大的中间件支持,允许高度自定义请求/响应管道。**ASP.NET** Web API对中间件的支持有限。使用HTTP处理程序和模块进行请求处理。**选择ASP.NET Web API和ASP.NET Core Web API之间的选择如果您正在进行新项目并希望获得最新功能、性能优化和跨平台功能,建议使用ASP.NET** Core Web API。**假设您有一个基于.NET** Framework的现有应用程序或特定依赖于Windows-only功能。在这种情况下,ASP.NET Web API可能是合适的选择,尽管应考虑迁移到.NET Core以实现长期可持续性。**