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 方法,如 GETPOSTPUTPATCH 或 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。 REPL 表示读取-求值-打印循环 (read-evaluate-print loop)。 这是一种简单而常用的交互式命令行环境构建方法。 在下一单元中,你将创建一个简单的 Web API,然后使用 .NET HTTP REPL 与其交互。

给TA打赏
共{{data.count}}人
人已打赏
.Net Core

使用 ASP.NET Core 控制器创建 Web API 介绍

2022-8-12 9:47:06

.Net Core

练习 - 创建 Web API 项目

2022-8-12 10:01:12

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
今日签到
有新私信 私信列表
搜索