概述
笔者在《Drupal8网站的API接口调用与权限控制》一文中,介绍了如何用Drupal8作为后端数据管理平台,前端通过API调用数据接口。实现Drupal8的数据解耦,与小程序和移动APP进行无缝衔接。
本文进一步介绍jsonapi的拓展功能。包括如何添加相关的扩展模块,实现jsonapi接口文档的自动生成和优雅展示。
相关模块介绍
1.JSON:API Extras
-
JSON:API模块提供零配置开箱。使用JSON:API Extras自定义您的API。JSON:API Extras提供了一种方法来覆盖JSON:API模块提供的默认零配置实现并为其提供有限的配置。
-
以下是JSON:API Extras模块的当前功能:
- 启用和禁用资源。
- 覆盖资源的名称。示例:
article
代替node--article
- 覆盖资源的路径:示例:
api/articles
代替jsonapi/node/article
- 禁用字段。
- 使用字段别名。示例:
tags
代替field_tags
。 - 增强现场输出。示例:使用
date_time
字段增强器格式化日期字段。
2.OpenAPI for JSON:API
-
与基本的Open API模块集成以生成JSON:API的定义。如果您需要由JSON:API驱动的API的文档,则需要启用此模块和文档生成器,例如Open API UI ReDoc。请查看Open API项目,以获取有关替代UI生成器的更多信息。
-
此模块需要Open API 2.x或更高版本。
-
该模块确实为Open API提供了必要的插件,以服务于JSON:API定义文档。为此,它至少需要**Open API(8.x-2.x)**。
3.ReDoc for OpenAPI UI
-
ReDoc是一个JavaScript库,允许用户浏览Web服务API的api文档。该模块提供ReDoc库,用于在Drupal站点中显示OpenAPI规范。使用该项目需要OpenAPI UI,因为它提供了基础架构。请访问OpenAPI项目页面以获取更多信息。
-
该模块需要OpenAPI UI模块。
4.OpenAPI UI
-
OpenAPI UI模块围绕在Drupal站点内显示OpenAPI规范实现了一个API。该库实现了一个插件库,可用于在您的网站中初始化API资源管理器UI。
-
该模块没有任何已实现的插件,但是Swagger UI和ReDoc的实现可以作为Drupal模块使用。
-
请访问Swagger for OpenAPI UI模块和ReDoc for OpenAPI UI模块页面,以获取有关使用这些库的信息。
-
OpenAPI是用于记录Web服务api的规范,该规范是一致的,开发人员可以重复使用。使用一致的格式可以重用api客户端库,并获得学习新api的一致体验。
-
该模块通过在Drupal和库之间提供集成以显示api规范供开发人员和最终用户使用,从而适合OpenAPI生态系统。有关Drupal api的OpenAPI规范以及其他贡献模块的API的信息,请查看OpenAPI模块。
示例
安装并启用扩展模块
composer require drupal/jsonapi_extras drupal/openapi_jsonapi drupal/openapi_ui_redoc drupal/openapi_ui
drush en -y jsonapi_extras openapi_jsonapi openapi_ui_redoc
drush cr
自动生成API文档
- 来到
/admin/config/services/openapi
页面。

-
点击
View/Download
按钮,可以查看和下载自动生成的API文档。 -
点击
Explore with ReDoc
按钮,可以看到以ReDoc方式显示的在线API文档,看起来更加美观。 -
需要自定义API,通过
/admin/config/services/jsonapi/extras
页面来设置。需要进行资源覆写点击Resource overrides
按钮。
例如,覆写article资源的API:
1.在过滤框中输入article。

2.点击“覆写”按钮。

- 选择禁用资源,则相关article的资源API不可以访问。
- 可以自定义资源路径。如,将
node/artcle
改为article
。

- 可以禁用不需要API返回的资源字段,只需在字段左边勾选。

3.保存。回到API文档查看页面/admin/config/services/openapi
,点击Explore with ReDoc
按钮,找到article
资源。
