零、前言

编写 web API 是最受欢迎的编程技能之一,因为它提供了轻量级 HTTP 服务,可以覆盖广泛的客户机。设计良好的 web API 可用于各种客户端,如桌面、web 和移动应用;作为其 HTTP 服务,它可以跨平台使用。 ASP.NET Web API 2 是构建基于 REST 的 API 的理想平台,被广泛采用,并取得了很大成功。微软通过引入跨平台的.NET Core 和跨平台的 ASP.NET Core 技术,进入了开源世界。 ASP.NET Core 为开发 web 应用开辟了一个激动人心、功能丰富且轻量级的新天地。有了这项新技术,我们不再局限于 Windows 操作系统的世界来构建应用。它确实是跨平台的,因为我们不再需要使用 VisualStudioIDE 来开发应用。 ASP.NET Core 为构建 web API 提供了一种非常创新的方法。在本书中,您将了解 ASP.NET Core 剖析,通过探索中间件的概念创建 web API,与数据库集成,应用各种安全机制,并在流行的 web UI 框架中使用它们。 本书考虑了经验丰富的开发人员和新开发人员。有开发 web API 的经验将是一个额外的优势,但这不是一个先决条件。它将帮助您构建一个真正跨平台的 ASP.NET Core Web API 并掌握它。在编写本书时,我们正在使用.NET Core 2.0 Preview 2 和 ASP.NET Core 2.0 Preview 2,以及 Visual Studio 2017 Preview 3,我们确实计划在 ASP.NET Core 2.0 的最终版本中更新本书。

这本书涵盖的内容

第一章微服务和面向服务架构简介,讨论了行业中面向服务架构的发展趋势,以及微服务架构带来了什么。

第 2 章理解 HTTP 和 REST更新了 web 架构的概念,描述了 HTTP 背后的核心技术和概念及其方法,并向您介绍 REST 架构风格。

第 3 章ASP.NET Core Web API 剖析带您踏上了解 Web API 被接受的旅程,并让您开始创建 ASP.NET Core Web API 并了解其剖析。

第 4 章控制器、动作和模型涵盖了请求如何与控制器交互、如何与控制器调度流程协同工作、如何定制控制器调度流程以及如何与动作方法结果协同工作的核心概念。

第 5 章实现路由,帮助您了解路由如何将传入 HTTP 请求映射到其相应控制器的动作方法。

第 6 章中间件和过滤器深入探讨了 ASP.NET Core 的一个显著特征——中间件和过滤器。

第 7 章执行单元和集成测试介绍了如何为 web API 编写单元测试和执行集成测试。

第 8 章Web API 安全探讨了 Web API 的标识、身份验证和授权的概念。

第 9 章与数据库的集成,通过 EF 6、EF Core、Dapper 等 ORM 与各种数据库进行集成。

第 10 章错误处理、跟踪和日志记录探讨了 ASP.NET Core 内置的日志记录功能,并向您展示了如何编写高效的错误处理代码。

第 11 章优化与性能解释了编写 web API 的异步方式,以及如何应用缓存技术来提高 web API 的性能。

第 12 章托管部署在 IIS、单机版、Docker、Azure、Linux 等多种平台上部署 ASP.NET Core Web API。它展示了其真正的跨平台性质。

第 13 章现代 Web 前端在 UI 框架中使用从前面章节开发的 Web API,如 Angular、Ionic、React 等。

这本书你需要什么

完成本书中给出的练习练习需要以下软件:

  • Windows 7 或更高版本、任何 Linux 风格的计算机或 macOS
  • .NET Core 2.0 预览版 2 SDK
  • Visual Studio 2017 预览版 3(任何版本)
  • 非 Windows 计算机的 Visual Studio 代码
  • 用于 VisualStudio 代码的 OmniSharp
  • NodeJS 构建现代 UI 框架
  • SQLServerExpress 版
  • 码头工人工具箱
  • 邮递员:跨平台 REST 客户端
  • 您最喜欢的浏览器

这本书是给谁的

本书面向希望掌握 ASP.NET Core(Web API)的.NET 开发人员,他们对以前的 ASP.NET Web API 略知一二,但对它没有深入的了解。您需要了解 VisualStudio 和 C#,并具备一些 HTML、CSS 和 JavaScript 知识。

习俗

在本书中,您将发现许多文本样式可以区分不同类型的信息。下面是这些风格的一些例子,并解释了它们的含义。

文本中的代码字、数据库表名、文件夹名、文件名、文件扩展名、路径名、虚拟 URL、用户输入和 Twitter 句柄如下所示:“运行dotnet build命令将执行例程构建并生成binobj文件夹。”

代码块设置如下:

    public class Program 
    {
      public static void Main(string[] args)
      {
         BuildWebHost(args).Run();
      } 
    } 

任何命令行输入或输出的编写方式如下:

docker run -it -d -p 85:80 packtcontantsAPI

新术语重要词语以粗体显示。您在屏幕上(例如,在菜单或对话框中)看到的文字将显示如下文本:“打开 Visual Studio 2017 IDE,单击“新建项目”以打开“项目模板”对话框。”

Warnings or important notes appear like this. Tips and tricks appear like this.

读者反馈

我们欢迎读者的反馈。让我们知道你对这本书的看法你喜欢还是不喜欢。读者反馈对我们来说很重要,因为它可以帮助我们开发出您将真正从中获得最大收益的标题。要向我们发送总体反馈,只需发送电子邮件feedback@packtpub.com,并在邮件主题中提及该书的标题。如果您对某个主题有专业知识,并且您有兴趣撰写或贡献一本书,请参阅我们的作者指南www.packtpub.com/authors

客户支持

既然您是一本 Packt 图书的骄傲拥有者,我们有很多东西可以帮助您从购买中获得最大收益。

下载示例代码

您可以从您的帐户下载本书的示例代码文件 http://www.packtpub.com 。如果您在其他地方购买了本书,您可以访问http://www.packtpub.com/support 并注册,将文件直接通过电子邮件发送给您。您可以通过以下步骤下载代码文件:

  1. 使用您的电子邮件地址和密码登录或注册我们的网站。
  2. 将鼠标指针悬停在顶部的“支持”选项卡上。
  3. 点击代码下载和勘误表。
  4. 在搜索框中输入图书的名称。
  5. 选择要下载代码文件的书籍。
  6. 从您购买本书的下拉菜单中选择。
  7. 点击代码下载。

下载文件后,请确保使用以下最新版本解压或解压缩文件夹:

  • WinRAR/7-Zip for Windows
  • 适用于 Mac 的 Zipeg/iZip/UnRarX
  • 适用于 Linux 的 7-Zip/PeaZip

该书的代码包也托管在 GitHub 上的https://github.com/PacktPublishing/Mastering-ASP.NET-Web-API 。我们在上还提供了丰富的书籍和视频目录中的其他代码包 https://github.com/PacktPublishing/ 。看看他们!

勘误表

虽然我们已尽一切努力确保内容的准确性,但错误确实会发生。如果您在我们的一本书中发现错误,可能是文本或代码中的错误,如果您能向我们报告,我们将不胜感激。通过这样做,您可以使其他读者免于沮丧,并帮助我们改进本书的后续版本。如果您发现任何错误,请访问进行报告 http://www.packtpub.com/submit-errata ,选择您的书籍,点击勘误表提交表单链接,然后输入勘误表的详细信息。一旦您的勘误表得到验证,您的提交将被接受,勘误表将上载到我们的网站或添加到该标题勘误表部分下的任何现有勘误表列表中。要查看之前提交的勘误表,请转至https://www.packtpub.com/books/content/support 并在搜索字段中输入图书名称。所需信息将出现在勘误表部分下。

盗版行为

在互联网上盗版版权材料是所有媒体都面临的一个持续问题。在 Packt,我们非常重视版权和许可证的保护。如果您在互联网上发现任何形式的非法复制品,请立即向我们提供地址或网站名称,以便我们采取补救措施。请致电copyright@packtpub.com与我们联系,并提供可疑盗版材料的链接。我们感谢您在保护我们的作者方面提供的帮助以及我们为您带来有价值内容的能力。

问题

如果您对本书的任何方面有任何问题,可以通过questions@packtpub.com与我们联系,我们将尽力解决该问题。