使用 Asciidoctor

本节描述了与 Spring REST Docs 特别相关的 Asciidoctor 使用方面。spring-doc.cadn.net.cn

Asciidoc 是文档格式。 Asciidoctor 是从 Asciidoc 文件(以 .adoc 结尾)生成内容(通常为 HTML)的工具。

包含代码片段

本节介绍如何包含 Asciidoc 代码片段。spring-doc.cadn.net.cn

为操作包含多个代码片段

您可以使用名为 operation 的宏来导入为特定操作生成的全部或部分代码片段。 通过在项目的 构建配置 中包含 spring-restdocs-asciidoctor,即可使用该宏。spring-doc.cadn.net.cn

宏的目标是操作的名称。 在其最简单的形式中,您可以使用该宏包含某个操作的所有代码片段,如下例所示:spring-doc.cadn.net.cn

operation::index[]

操作宏还支持 snippets 属性。 您可以使用它来选择应包含的代码片段。 该属性的值是一个逗号分隔的列表。 列表中的每个条目应为要包含的代码片段文件的名称(不含 .adoc 后缀)。 例如,可以仅包含 curl、HTTP 请求和 HTTP 响应代码片段,如下例所示:spring-doc.cadn.net.cn

operation::index[snippets='curl-request,http-request,http-response']

前面的示例等同于以下内容:spring-doc.cadn.net.cn

[[example_curl_request]]
== Curl request

include::{snippets}/index/curl-request.adoc[]

[[example_http_request]]
== HTTP request

include::{snippets}/index/http-request.adoc[]

[[example_http_response]]
== HTTP response

include::{snippets}/index/http-response.adoc[]
章节标题

对于每个使用 operation 宏包含的代码片段,都会创建一个带有标题的章节。 以下为内置代码片段提供的默认标题:spring-doc.cadn.net.cn

代码片段 标题

curl-requestspring-doc.cadn.net.cn

Curl 请求spring-doc.cadn.net.cn

http-requestspring-doc.cadn.net.cn

HTTP 请求spring-doc.cadn.net.cn

http-responsespring-doc.cadn.net.cn

HTTP 响应spring-doc.cadn.net.cn

httpie-requestspring-doc.cadn.net.cn

HTTPie 请求spring-doc.cadn.net.cn

linksspring-doc.cadn.net.cn

链接spring-doc.cadn.net.cn

request-bodyspring-doc.cadn.net.cn

请求体spring-doc.cadn.net.cn

request-fieldsspring-doc.cadn.net.cn

请求字段spring-doc.cadn.net.cn

response-bodyspring-doc.cadn.net.cn

响应体spring-doc.cadn.net.cn

response-fieldsspring-doc.cadn.net.cn

响应字段spring-doc.cadn.net.cn

对于上表中未列出的代码片段,默认标题是通过将 - 字符替换为空格并将首字母大写生成的。 例如,名为 custom-snippet will be 的代码片段的标题为“自定义代码片段”。spring-doc.cadn.net.cn

您可以通过使用文档属性来自定义默认标题。 属性名称应为 operation-{snippet}-title。 例如,若要将 curl-request 代码片段的标题自定义为"示例请求",您可以使用以下属性:spring-doc.cadn.net.cn

:operation-curl-request-title: Example request

包含独立代码片段

include 宏用于在文档中包含独立的代码片段。 您可以使用snippets属性(该属性由构建配置中配置的spring-restdocs-asciidoctor自动设置)来引用代码片段输出目录。 以下示例展示了如何实现这一点:spring-doc.cadn.net.cn

include::{snippets}/index/curl-request.adoc[]

自定义表格

许多代码片段在其默认配置中包含一个表格。 表格的外观可以进行自定义,既可以在包含代码片段时提供额外的配置,也可以使用自定义的代码片段模板。spring-doc.cadn.net.cn

格式化列

Asciidoctor 对格式化表格列提供了丰富的支持。 如下例所示,您可以通过使用 cols 属性来指定表格列的宽度:spring-doc.cadn.net.cn

[cols="1,3"] (1)
include::{snippets}/index/links.adoc[]
1 表格的宽度被分配到两列中,其中第二列的宽度是第一列的三倍。

配置标题

您可以通过使用以 . 开头的行来指定表格的标题。 以下示例展示了如何实现这一点:spring-doc.cadn.net.cn

.Links (1)
include::{snippets}/index/links.adoc[]
1 表格的标题将是 Links

避免表格格式问题

Asciidoctor 使用 | 字符来分隔表格中的单元格。 如果您希望在单元格内容中显示 |,这可能会引发问题。 您可以通过使用反斜杠转义 | 来避免该问题——换句话说,使用 \| 而不是 |spring-doc.cadn.net.cn

所有默认的 Asciidoctor 片段模板都会通过一个名为 tableCellContent 的 Mustache _lambda_ 自动执行此转义操作。 如果您编写自己的自定义模板,可能需要使用此 _lambda_。 以下示例展示了如何在包含 description 属性值的单元格中转义 | 字符:spring-doc.cadn.net.cn

| {{#tableCellContent}}{{description}}{{/tableCellContent}}

进一步阅读

有关自定义表格的更多信息,请参阅 Asciidoctor 用户手册的表格部分spring-doc.cadn.net.cn