配置
本节介绍如何配置 Spring REST Docs。
记录的 URI
本节介绍如何配置记录的 URI。
MockMvc URI 自定义
使用 MockMvc 时,Spring REST Docs 记录的 URI 的默认配置如下:
设置 | 违约 |
---|---|
方案 |
|
主机 |
|
港口 |
|
此配置由MockMvcRestDocumentationConfigurer
.
您可以使用其 API 更改一个或多个默认值以满足您的需求。
以下示例显示了如何执行此作:
this.mockMvc = MockMvcBuilders.webAppContextSetup(this.context)
.apply(documentationConfiguration(this.restDocumentation).uris()
.withScheme("https")
.withHost("example.com")
.withPort(443))
.build();
如果端口设置为已配置方案的默认值(HTTP 的端口 80 或 HTTPS 的端口 443),则生成的代码段中的任何 URI 都会省略该端口。 |
要配置请求的上下文路径,请使用contextPath method 开启MockHttpServletRequestBuilder . |
REST Assured URI 自定义
REST Assured 通过发出实际的 HTTP 请求来测试服务。因此,URI 必须为 在对服务执行作后但在执行之前进行自定义 记录。特定于 REST 的 为此目的提供了 preprocessor。
WebTestClient URI 自定义
当使用 WebTestClient 时,Spring REST Docs 记录的 URI 的默认基础是http://localhost:8080
.
您可以使用 baseUrl(String)
method 开启WebTestClient.Builder
.
以下示例显示了如何执行此作:
@Before
public void setUp() {
this.webTestClient = WebTestClient.bindToApplicationContext(this.context)
.configureClient()
.baseUrl("https://api.example.com") (1)
.filter(documentationConfiguration(this.restDocumentation))
.build();
}
1 | 将记录的 URI 的基配置为https://api.example.com . |
代码段编码
默认代码段编码为UTF-8
.
您可以使用RestDocumentationConfigurer
应用程序接口。
例如,以下示例使用ISO-8859-1
:
this.mockMvc = MockMvcBuilders.webAppContextSetup(this.context)
.apply(documentationConfiguration(this.restDocumentation).snippets().withEncoding("ISO-8859-1"))
.build();
this.webTestClient = WebTestClient.bindToApplicationContext(this.context).configureClient()
.filter(documentationConfiguration(this.restDocumentation)
.snippets().withEncoding("ISO-8859-1"))
.build();
this.spec = new RequestSpecBuilder()
.addFilter(documentationConfiguration(this.restDocumentation).snippets().withEncoding("ISO-8859-1"))
.build();
当 Spring REST Docs 将请求或响应的内容转换为String 这charset 在Content-Type 如果可用,则使用 header。
如果没有它,JVM 的默认Charset 被使用。
您可以配置 JVM 的默认值Charset 通过使用file.encoding system 属性。 |
代码段模板格式
默认的 snippet 模板格式为 Asciidoctor。
Markdown 也支持开箱即用。
您可以使用RestDocumentationConfigurer
应用程序接口。
以下示例说明如何执行此作:
this.mockMvc = MockMvcBuilders.webAppContextSetup(this.context)
.apply(documentationConfiguration(this.restDocumentation).snippets()
.withTemplateFormat(TemplateFormats.markdown()))
.build();
this.webTestClient = WebTestClient.bindToApplicationContext(this.context).configureClient()
.filter(documentationConfiguration(this.restDocumentation)
.snippets().withTemplateFormat(TemplateFormats.markdown()))
.build();
this.spec = new RequestSpecBuilder()
.addFilter(documentationConfiguration(this.restDocumentation).snippets()
.withTemplateFormat(TemplateFormats.markdown()))
.build();
默认代码段
默认情况下,会生成 6 个代码段:
-
curl-request
-
http-request
-
http-response
-
httpie-request
-
request-body
-
response-body
您可以在设置过程中使用RestDocumentationConfigurer
应用程序接口。
以下示例仅生成curl-request
snippet 中:
this.mockMvc = MockMvcBuilders.webAppContextSetup(this.context)
.apply(documentationConfiguration(this.restDocumentation).snippets().withDefaults(curlRequest()))
.build();
this.webTestClient = WebTestClient.bindToApplicationContext(this.context)
.configureClient().filter(
documentationConfiguration(this.restDocumentation)
.snippets().withDefaults(curlRequest()))
.build();
this.spec = new RequestSpecBuilder()
.addFilter(documentationConfiguration(this.restDocumentation).snippets().withDefaults(curlRequest()))
.build();
默认作预处理器
您可以在设置过程中使用RestDocumentationConfigurer
应用程序接口。
以下示例删除Foo
headers 和 pretty print 所有响应:
this.mockMvc = MockMvcBuilders.webAppContextSetup(this.context)
.apply(documentationConfiguration(this.restDocumentation).operationPreprocessors()
.withRequestDefaults(modifyHeaders().remove("Foo")) (1)
.withResponseDefaults(prettyPrint())) (2)
.build();
1 | 应用一个请求预处理器,该处理器会删除名为Foo . |
2 | 应用一个响应预处理器,该预处理器可以漂亮地打印其内容。 |
this.webTestClient = WebTestClient.bindToApplicationContext(this.context)
.configureClient()
.filter(documentationConfiguration(this.restDocumentation)
.operationPreprocessors()
.withRequestDefaults(modifyHeaders().remove("Foo")) (1)
.withResponseDefaults(prettyPrint())) (2)
.build();
1 | 应用一个请求预处理器,该处理器会删除名为Foo . |
2 | 应用一个响应预处理器,该预处理器可以漂亮地打印其内容。 |
this.spec = new RequestSpecBuilder()
.addFilter(documentationConfiguration(this.restDocumentation).operationPreprocessors()
.withRequestDefaults(modifyHeaders().remove("Foo")) (1)
.withResponseDefaults(prettyPrint())) (2)
.build();
1 | 应用一个请求预处理器,该处理器会删除名为Foo . |
2 | 应用一个响应预处理器,该预处理器可以漂亮地打印其内容。 |