Polish contribution that added support for documenting HTTP headers
The main changes are:
- Update javadoc to align with changes made in 5a01016
- Update documentation with details of the new support for documenting
HTTP headers
- Add tests to verify that HTTP headers are matched case-insensitively
Closes gh-71
This commit is contained in:
@@ -288,6 +288,31 @@ built using one of the methods on `RestDocumentationRequestBuilders` rather than
|
||||
|
||||
|
||||
|
||||
[[documenting-your-api-http-headers]]
|
||||
=== HTTP headers
|
||||
|
||||
The headers in a request or response can be documented using `requestHeaders` and
|
||||
`responseHeaders` respectively. For example:
|
||||
|
||||
[source,java,indent=0]
|
||||
----
|
||||
include::{examples-dir}/com/example/HttpHeaders.java[tags=headers]
|
||||
----
|
||||
<1> Perform a `GET` request with an `Authorization` header that uses basic authentication
|
||||
<2> Produce a snippet describing the request's headers. Uses the static `requestHeaders`
|
||||
method on `org.springframework.restdocs.headers.HeaderDocumentation`.
|
||||
<3> Document the `Authorization` header. Uses the static `headerWithName` method on
|
||||
`org.springframework.restdocs.headers.HeaderDocumentation.
|
||||
<4> Produce a snippet describing the response's headers. Uses the static `responseHeaders`
|
||||
method on `org.springframework.restdocs.headers.HeaderDocumentation`.
|
||||
|
||||
The result is a snippet named `request-headers.adoc` and a snippet named
|
||||
`response-headers.adoc`. Each contains a table describing the headers.
|
||||
|
||||
When documenting HTTP Headers, the test will fail if a documented header is not found in
|
||||
the request or response.
|
||||
|
||||
|
||||
[[documenting-your-api-constraints]]
|
||||
=== Documenting constraints
|
||||
|
||||
|
||||
50
docs/src/test/java/com/example/HttpHeaders.java
Normal file
50
docs/src/test/java/com/example/HttpHeaders.java
Normal file
@@ -0,0 +1,50 @@
|
||||
/*
|
||||
* Copyright 2014-2015 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.example;
|
||||
|
||||
import org.springframework.test.web.servlet.MockMvc;
|
||||
|
||||
import static org.springframework.restdocs.headers.HeaderDocumentation.headerWithName;
|
||||
import static org.springframework.restdocs.headers.HeaderDocumentation.requestHeaders;
|
||||
import static org.springframework.restdocs.headers.HeaderDocumentation.responseHeaders;
|
||||
import static org.springframework.restdocs.mockmvc.MockMvcRestDocumentation.document;
|
||||
import static org.springframework.restdocs.mockmvc.RestDocumentationRequestBuilders.get;
|
||||
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
|
||||
|
||||
public class HttpHeaders {
|
||||
|
||||
private MockMvc mockMvc;
|
||||
|
||||
public void headers() throws Exception {
|
||||
// tag::headers[]
|
||||
this.mockMvc
|
||||
.perform(get("/people").header("Authorization", "Basic dXNlcjpzZWNyZXQ=")) // <1>
|
||||
.andExpect(status().isOk())
|
||||
.andDo(document("headers",
|
||||
requestHeaders( // <2>
|
||||
headerWithName("Authorization").description(
|
||||
"Basic auth credentials")), // <3>
|
||||
responseHeaders( // <4>
|
||||
headerWithName("X-RateLimit-Limit").description(
|
||||
"The total number of requests permitted per period"),
|
||||
headerWithName("X-RateLimit-Remaining").description(
|
||||
"Remaining requests permitted in current period"),
|
||||
headerWithName("X-RateLimit-Reset").description(
|
||||
"Time at which the rate limit period will reset"))));
|
||||
// end::headers[]
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user