Consider parameters when performing a POST request
Previously, when producing the curl snippet for a POST request, the request's parameter map was ignored. This commit updates the snippet generation to look at the parameter map and POST it to the server as application/x-www-form-urlencoded data using -d Closes gh-38
This commit is contained in:
committed by
Andy Wilkinson
parent
8b133c7c66
commit
cc54e5d7b0
@@ -160,6 +160,13 @@ public abstract class CurlDocumentation {
|
|||||||
if (request.getContentLengthLong() > 0) {
|
if (request.getContentLengthLong() > 0) {
|
||||||
this.writer.print(String.format(" -d '%s'", getContent(request)));
|
this.writer.print(String.format(" -d '%s'", getContent(request)));
|
||||||
}
|
}
|
||||||
|
else if (isPostRequest(request)) {
|
||||||
|
Map<String, String[]> parameters = request.getParameterMap();
|
||||||
|
if (!parameters.isEmpty()) {
|
||||||
|
this.writer.print(String
|
||||||
|
.format(" -d '%s'", toQueryString(parameters)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
this.writer.println();
|
this.writer.println();
|
||||||
}
|
}
|
||||||
@@ -168,6 +175,10 @@ public abstract class CurlDocumentation {
|
|||||||
return RequestMethod.GET == RequestMethod.valueOf(request.getMethod());
|
return RequestMethod.GET == RequestMethod.valueOf(request.getMethod());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private boolean isPostRequest(HttpServletRequest request) {
|
||||||
|
return RequestMethod.POST == RequestMethod.valueOf(request.getMethod());
|
||||||
|
}
|
||||||
|
|
||||||
private boolean isNonStandardPort(HttpServletRequest request) {
|
private boolean isNonStandardPort(HttpServletRequest request) {
|
||||||
return (SCHEME_HTTP.equals(request.getScheme()) && request.getRemotePort() != STANDARD_PORT_HTTP)
|
return (SCHEME_HTTP.equals(request.getScheme()) && request.getRemotePort() != STANDARD_PORT_HTTP)
|
||||||
|| (SCHEME_HTTPS.equals(request.getScheme()) && request
|
|| (SCHEME_HTTPS.equals(request.getScheme()) && request
|
||||||
|
|||||||
@@ -147,6 +147,39 @@ public class CurlDocumentationTests {
|
|||||||
hasItem("$ curl http://localhost/foo?k1=foo+bar%26 -i"));
|
hasItem("$ curl http://localhost/foo?k1=foo+bar%26 -i"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void postRequestWithOneParameter() throws IOException {
|
||||||
|
MockHttpServletRequest request = new MockHttpServletRequest("POST", "/foo");
|
||||||
|
request.addParameter("k1", "v1");
|
||||||
|
documentCurlRequest("post-request-with-one-parameter").handle(
|
||||||
|
new StubMvcResult(request, null));
|
||||||
|
assertThat(requestSnippetLines("post-request-with-one-parameter"),
|
||||||
|
hasItem("$ curl http://localhost/foo -i -X POST -d 'k1=v1'"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void postRequestWithMultipleParameters() throws IOException {
|
||||||
|
MockHttpServletRequest request = new MockHttpServletRequest("POST", "/foo");
|
||||||
|
request.addParameter("k1", "v1");
|
||||||
|
request.addParameter("k2", "v2");
|
||||||
|
request.addParameter("k1", "v1-bis");
|
||||||
|
documentCurlRequest("post-request-with-multiple-parameters").handle(
|
||||||
|
new StubMvcResult(request, null));
|
||||||
|
assertThat(
|
||||||
|
requestSnippetLines("post-request-with-multiple-parameters"),
|
||||||
|
hasItem("$ curl http://localhost/foo -i -X POST -d 'k1=v1\\&k1=v1-bis\\&k2=v2'"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void postRequestWithUrlEncodedParameter() throws IOException {
|
||||||
|
MockHttpServletRequest request = new MockHttpServletRequest("POST", "/foo");
|
||||||
|
request.addParameter("k1", "a&b");
|
||||||
|
documentCurlRequest("post-request-with-url-encoded-parameter").handle(
|
||||||
|
new StubMvcResult(request, null));
|
||||||
|
assertThat(requestSnippetLines("post-request-with-url-encoded-parameter"),
|
||||||
|
hasItem("$ curl http://localhost/foo -i -X POST -d 'k1=a%26b'"));
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void requestWithHeaders() throws IOException {
|
public void requestWithHeaders() throws IOException {
|
||||||
MockHttpServletRequest request = new MockHttpServletRequest("GET", "/foo");
|
MockHttpServletRequest request = new MockHttpServletRequest("GET", "/foo");
|
||||||
|
|||||||
Reference in New Issue
Block a user