ASP.NET Core 中的 REST
当你浏览网页时,Web 服务器将使用 HTML、CSS 和 JavaScript 与浏览器通信。 例如,如果你与页面进行了提交登录窗体或选择购买按钮的交互,浏览器会将信息发送回 Web 服务器。
同样,Web 服务器可以使用 Web 服务与各种各样的客户端(浏览器、移动设备、其他 Web 服务器等)通信。 API 客户端通过 HTTP 与服务器通信,两者都使用 JSON 或 XML 等数据格式来交换信息。 API 通常供单页应用程序 (SPA) 用于在 Web 浏览器中执行大部分用户界面逻辑。 与 Web 服务器的通信主要是通过 Web API 进行的。
REST:用于使用 HTTP 生成 API 的常见模式
表述性状态转移 (REST) 是一种用于生成 Web 服务的体系结构样式。 REST 请求是通过 HTTP 发出的。 它们使用 Web 浏览器用于检索网页和将数据发送到服务器的相同 HTTP 谓词。 谓词如下:
GET
:从 Web 服务检索数据。POST
:在 Web 服务上创建新的数据项。PUT
:更新 Web 服务上的数据项。PATCH
:通过描述有关如何修改项的一组说明,更新 Web 服务上的数据项。 本模块中的示例应用程序不使用此谓词。DELETE
:删除 Web 服务上的数据项。
遵循 REST 的 Web 服务 API 称为 RESTful API。 它们通过以下方法进行定义:
- 一个基 URI。
- HTTP 方法,如
GET
、POST
、PUT
、PATCH
或DELETE
。 - 数据的媒体类型,例如 JavaScript 对象表示法 (JSON) 或 XML。
API 通常需要为几种不同但相关的事物提供服务。 例如,我们的披萨 API 可以管理披萨、客户和订单。 我们使用路由将 URI(统一资源标识符)映射到代码中的逻辑分区,从而将对 https://localhost:5000/pizza 发出的请求路由到 PizzaController
,并将对 https://localhost:5000/order 的请求路由到 OrderController
。
在 ASP.NET Core 中创建 API 的好处
借助 ASP.NET,可以使用相同的框架和模式来生成网页和服务。 你可以在同一个项目中重用模型类和验证逻辑,甚至还可以并行提供网页和服务。 此方法有很多优点:
简单的序列化:ASP.NET 设计用于提供新式 Web 体验。 终结点会自动将类序列化为格式正确的现成 JSON。 不需要特殊配置。 你可以为具有独特要求的终结点自定义序列化。
身份验证和授权:出于安全原因,API 终结点内置了对行业标准 JSON Web 令牌 (JWT) 的支持。 基于策略的授权使你可以灵活地在代码中定义强大的访问控制规则。
与代码一起路由:ASP.NET 让你可以使用属性来定义与代码内联的路由和谓词。 请求路径、查询字符串和请求正文中的数据将自动绑定到方法参数。
默认使用 HTTPS:HTTPS 是新式专业 Web API 的一个重要组成部分。 它依赖于端到端加密来提供隐私保护,并有助于确保 API 调用不会在客户端和服务器之间被截获和更改。
ASP.NET 提供对 HTTPS 的现成支持。 它会自动生成测试证书,并轻松导入该证书以启用本地 HTTPS,使你可以在发布应用程序之前安全地运行并调试应用程序。
与 .NET 应用共享代码和知识
可以使用 .NET 技能和生态系统,与使用 .NET 生成的其他应用(包括移动应用、Web 应用、桌面应用和服务)共享 Web API 的逻辑。
使用 .NET HTTP REPL 测试 Web API
当你开发传统网站时,你通常会在 Web 浏览器中查看和测试工作成果。 Web API 接受并返回数据而不是 HTML,因此 Web 浏览器不是最佳的 Web API 测试工具。
可用于浏览 Web API 及与其交互的最简单选项之一是 .NET HTTP REPL(读取-求值-打印循环)。 这是一种简单而常用的交互式命令行环境构建方法。 在下一单元中,你将创建一个简单的 Web API,然后使用 .NET HTTP REPL 与其交互。