零、前言

Web 服务一直是一个重要的话题。随着休息,事情变得越来越简单和更好。如今,restfulweb 服务得到了广泛的应用。十年前它很重要,但单页应用程序SPA)和移动应用程序的使用量大大增加。本书的目的是向 PHP 开发人员介绍 RESTfulWeb 服务体系结构、有效创建 RESTfulWeb 服务的现有工具,如名为 Lumen 的微框架、自动化 API 测试、API 测试框架、安全性和微服务体系结构。

尽管这本书是专门针对 PHP 的,因为我们将在 PHP7 中构建 RESTful web 服务,但它既不只是关于 PHP7,也不只是关于 REST。RESTful web 服务和 PHP 实现就是我们在本书中所做的。然而,你会学到更多。您将了解 PHP7 中新增的一些 PHP 功能。我们将介绍我们应该如何构造应用程序,以及与 web 和 web 服务相关的一些常见威胁。您将学习如何改进基本的 RESTful web 服务,并了解测试的重要性和不同类型的测试。因此,它不仅涉及 REST 或 PHP,还涉及一些次要但重要的编程相关内容,这些内容很简单,但在现实世界中会让事情变得更好。在本书的最后,您将了解一个名为 MicroService 的体系结构。

换句话说,尽管这本书是为 PHP 开发人员准备的,但它将使他们受益于 PHP 之外的内容。因此,这本书不是一本烹饪书,而是一段旅程,在这段旅程中,您开始学习 RESTful web 服务和 PHP7,然后开始构建 RESTful web 服务。然后,通过了解 RESTful web 服务中的问题并加以解决,您可以不断改进 RESTful web 服务。在这些改进过程中,您将学习 PHP 中的不同内容,并从中受益,甚至超过 PHP。

这本书涵盖的内容

第 1 章RESTful Web 服务,简介和动机向您介绍 Web 服务、REST 体系结构、RESTful Web 服务及其与其他 Web 服务(如 HTTP 谓词和 RESTful 端点)的比较。它还通过博客的例子解释了 web 服务,然后讨论了响应格式和响应代码。

第 2 章PHP7,为了更好地编码,包含了 PHP7 的新特性和变化,我们将在本书中使用这些特性和变化,或者这些特性和变化非常重要,值得讨论。

第三章创建 RESTful 端点是关于为一篇博客文章的 CRUD 操作创建 REST API 端点的内容。它还解释了通过名为 Postman 的 REST 客户端手动测试 API 端点的方法。

第 4 章回顾设计缺陷和安全威胁,回顾我们在前一章中构建的内容,并强调其中的问题和缺陷,以便我们以后可以即兴发挥。

第 5 章加载并解析 Composer,一个进化的,是关于 PHP 生态系统中的一个进化工具:Composer。这不仅仅是一个自动加载程序或包安装程序,而是一个依赖关系管理器。所以,你们将在本章中了解作曲家。

第 6 章用 Lumen照亮了 RESTful Web 服务,向您介绍了一个名为 Lumen 的微框架,我们将在其中重写 RESTful Web 服务端点,并回顾此工具将如何显著提高我们的速度和应用程序结构。

第 7 章改进 RESTful Web 服务使我们能够改进上一章所做的工作;您将学习如何改进 RESTfulWeb 服务。我们将创建身份验证,并制作一个转换器来分隔 JSON 结构的外观。此外,我们还将提高安全性并了解 SSL。

第 8 章API 测试–闸门上的防护装置介绍了自动化测试的需求。将介绍不同类型的测试,然后重点介绍 API 测试。然后,我们将介绍一个名为 CodeCeption 的自动化测试框架,并在其中编写 API 测试。

第 9 章微服务是关于微服务架构的。我们将了解微服务的好处和挑战,并研究一些可能的解决方案和权衡。

这本书你需要什么

尽管我使用了 Ubuntu,但任何安装了 PHP7 的操作系统都可以正常工作。除了 PHP7 之外,唯一需要的是 RDBMS。这本书在连接数据库时使用了 MySQL 相关的设置,所以 MySQL 是理想的,但 MariaDB 或 PostgreSQL 也可以。

这本书是给谁的

本书是为以下读者编写的:

  • 任何具有一些基本 PHP 知识并希望构建 RESTful web 服务的人。
  • 了解基本 PHP 并开发了基本动态网站并希望构建 RESTful web 服务的开发人员。
  • 学习过 PHP 并主要在开源 CMS(如 WordPress)中工作过的开发人员,希望开发需要构建 web 服务的定制应用程序。
  • 开发人员在代码点火器中使用遗留系统,希望探索 PHP 的现代生态系统。
  • 使用过诸如 Yii 或 Laravel 等现代框架的开发人员,但不确定构建 restapi 所需的关键部分,restapi 不仅可以达到目的,而且从长远来看运行良好,这并不总是需要手动测试,而且是可维护和可扩展的。
  • 经验丰富的 PHP 开发人员,他们创建了一个非常基本的 API 来返回数据,但希望让自己熟悉如何根据 REST 标准执行该操作,在出现身份验证时如何工作,以及如何为其编写测试。

习俗

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

文本中的码字、数据库表名、文件夹名、文件名、文件扩展名、路径名、虚拟 URL、用户输入和 Twitter 句柄如下所示:“randGen()方法使用两个参数定义返回值的范围。”

代码块设置如下:

<?php
function add($num1, $num2):int{
    return ($num1+$num2);
}

echo add(2,4); //6
echo add(2.5,4); //6

当我们希望提请您注意代码块的特定部分时,相关行或项目以粗体显示:

<?php
function add($num1, $num2):int{
    return ($num1+$num2);
}

echo add(2,4); //6
echo add(2.5,4); //6

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

sudo add-apt-repository ppa:ondrej/php

新术语和重要词语以粗体显示。您在屏幕上看到的单词(例如,在菜单或对话框中)将显示在文本中。

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

读者反馈

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

下载示例代码

您可以从您的帐户下载本书的示例代码文件 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/Building-RESTful-Web-Services-with-PHP-7 。我们在上还提供了丰富的书籍和视频目录中的其他代码包 https://github.com/PacktPublishing/ 。看看他们!

勘误表

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

盗版行为

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

问题

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