mirror of
https://github.com/OpenAPITools/openapi-generator.git
synced 2025-05-16 22:50:52 +00:00
Do not apply content-type header if no request body (#6648)
* Do not apply content-type header if no request body * Set content-type header if there are form params * Add tests * Run update script * Regenerated sample clients
This commit is contained in:
parent
a8642dbdfc
commit
02bcc55e23
@ -30,6 +30,7 @@ import io.swagger.models.Model;
|
|||||||
import io.swagger.models.Operation;
|
import io.swagger.models.Operation;
|
||||||
import io.swagger.models.Path;
|
import io.swagger.models.Path;
|
||||||
import io.swagger.models.Swagger;
|
import io.swagger.models.Swagger;
|
||||||
|
import io.swagger.models.parameters.BodyParameter;
|
||||||
import io.swagger.models.parameters.FormParameter;
|
import io.swagger.models.parameters.FormParameter;
|
||||||
import io.swagger.models.parameters.Parameter;
|
import io.swagger.models.parameters.Parameter;
|
||||||
import io.swagger.models.properties.ArrayProperty;
|
import io.swagger.models.properties.ArrayProperty;
|
||||||
@ -941,13 +942,16 @@ public abstract class AbstractJavaCodegen extends DefaultCodegen implements Code
|
|||||||
}
|
}
|
||||||
for (Operation operation : path.getOperations()) {
|
for (Operation operation : path.getOperations()) {
|
||||||
boolean hasFormParameters = false;
|
boolean hasFormParameters = false;
|
||||||
|
boolean hasBodyParameters = false;
|
||||||
for (Parameter parameter : operation.getParameters()) {
|
for (Parameter parameter : operation.getParameters()) {
|
||||||
if (parameter instanceof FormParameter) {
|
if (parameter instanceof FormParameter) {
|
||||||
hasFormParameters = true;
|
hasFormParameters = true;
|
||||||
}
|
}
|
||||||
|
if (parameter instanceof BodyParameter) {
|
||||||
|
hasBodyParameters = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
//only add content-Type if its no a GET-Method
|
if (hasBodyParameters || hasFormParameters){
|
||||||
if(path.getGet() != null || ! operation.equals(path.getGet())){
|
|
||||||
String defaultContentType = hasFormParameters ? "application/x-www-form-urlencoded" : "application/json";
|
String defaultContentType = hasFormParameters ? "application/x-www-form-urlencoded" : "application/json";
|
||||||
String contentType = operation.getConsumes() == null || operation.getConsumes().isEmpty() ? defaultContentType : operation.getConsumes().get(0);
|
String contentType = operation.getConsumes() == null || operation.getConsumes().isEmpty() ? defaultContentType : operation.getConsumes().get(0);
|
||||||
operation.setVendorExtension("x-contentType", contentType);
|
operation.setVendorExtension("x-contentType", contentType);
|
||||||
|
@ -37,8 +37,8 @@ public interface {{classname}} extends ApiClient.Api {
|
|||||||
*/
|
*/
|
||||||
@RequestLine("{{httpMethod}} {{{path}}}{{#hasQueryParams}}?{{/hasQueryParams}}{{#queryParams}}{{baseName}}={{=<% %>=}}{<%paramName%>}<%={{ }}=%>{{#hasMore}}&{{/hasMore}}{{/queryParams}}")
|
@RequestLine("{{httpMethod}} {{{path}}}{{#hasQueryParams}}?{{/hasQueryParams}}{{#queryParams}}{{baseName}}={{=<% %>=}}{<%paramName%>}<%={{ }}=%>{{#hasMore}}&{{/hasMore}}{{/queryParams}}")
|
||||||
@Headers({
|
@Headers({
|
||||||
"Content-Type: {{vendorExtensions.x-contentType}}",
|
{{#vendorExtensions.x-contentType}} "Content-Type: {{vendorExtensions.x-contentType}}",
|
||||||
"Accept: {{vendorExtensions.x-accepts}}",{{#headerParams}}
|
{{/vendorExtensions.x-contentType}} "Accept: {{vendorExtensions.x-accepts}}",{{#headerParams}}
|
||||||
"{{baseName}}: {{=<% %>=}}{<%paramName%>}<%={{ }}=%>"{{#hasMore}},
|
"{{baseName}}: {{=<% %>=}}{<%paramName%>}<%={{ }}=%>"{{#hasMore}},
|
||||||
{{/hasMore}}{{/headerParams}}
|
{{/hasMore}}{{/headerParams}}
|
||||||
})
|
})
|
||||||
@ -75,8 +75,8 @@ public interface {{classname}} extends ApiClient.Api {
|
|||||||
*/
|
*/
|
||||||
@RequestLine("{{httpMethod}} {{{path}}}?{{#queryParams}}{{baseName}}={{=<% %>=}}{<%paramName%>}<%={{ }}=%>{{#hasMore}}&{{/hasMore}}{{/queryParams}}")
|
@RequestLine("{{httpMethod}} {{{path}}}?{{#queryParams}}{{baseName}}={{=<% %>=}}{<%paramName%>}<%={{ }}=%>{{#hasMore}}&{{/hasMore}}{{/queryParams}}")
|
||||||
@Headers({
|
@Headers({
|
||||||
"Content-Type: {{vendorExtensions.x-contentType}}",
|
{{#vendorExtensions.x-contentType}} "Content-Type: {{vendorExtensions.x-contentType}}",
|
||||||
"Accept: {{vendorExtensions.x-accepts}}",{{#headerParams}}
|
{{/vendorExtensions.x-contentType}} "Accept: {{vendorExtensions.x-accepts}}",{{#headerParams}}
|
||||||
"{{baseName}}: {{=<% %>=}}{<%paramName%>}<%={{ }}=%>"{{#hasMore}},
|
"{{baseName}}: {{=<% %>=}}{<%paramName%>}<%={{ }}=%>"{{#hasMore}},
|
||||||
{{/hasMore}}{{/headerParams}}
|
{{/hasMore}}{{/headerParams}}
|
||||||
})
|
})
|
||||||
|
@ -5,6 +5,8 @@ import org.testng.annotations.Test;
|
|||||||
|
|
||||||
import io.swagger.codegen.CodegenType;
|
import io.swagger.codegen.CodegenType;
|
||||||
import io.swagger.codegen.languages.AbstractJavaCodegen;
|
import io.swagger.codegen.languages.AbstractJavaCodegen;
|
||||||
|
import io.swagger.models.*;
|
||||||
|
import io.swagger.models.parameters.*;
|
||||||
|
|
||||||
public class AbstractJavaCodegenTest {
|
public class AbstractJavaCodegenTest {
|
||||||
|
|
||||||
@ -49,4 +51,50 @@ public class AbstractJavaCodegenTest {
|
|||||||
public void toModelNameUsesPascalCase() throws Exception {
|
public void toModelNameUsesPascalCase() throws Exception {
|
||||||
Assert.assertEquals("JsonAnotherclass", fakeJavaCodegen.toModelName("json_anotherclass"));
|
Assert.assertEquals("JsonAnotherclass", fakeJavaCodegen.toModelName("json_anotherclass"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void preprocessSwaggerWithFormParamsSetsContentType() {
|
||||||
|
Path dummyPath = new Path()
|
||||||
|
.post(new Operation().parameter(new FormParameter()))
|
||||||
|
.get(new Operation());
|
||||||
|
|
||||||
|
Swagger swagger = new Swagger()
|
||||||
|
.path("dummy", dummyPath);
|
||||||
|
|
||||||
|
fakeJavaCodegen.preprocessSwagger(swagger);
|
||||||
|
|
||||||
|
Assert.assertNull(swagger.getPath("dummy").getGet().getVendorExtensions().get("x-contentType"));
|
||||||
|
Assert.assertEquals(swagger.getPath("dummy").getPost().getVendorExtensions().get("x-contentType"), "application/x-www-form-urlencoded");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void preprocessSwaggerWithBodyParamsSetsContentType() {
|
||||||
|
Path dummyPath = new Path()
|
||||||
|
.post(new Operation().parameter(new BodyParameter()))
|
||||||
|
.get(new Operation());
|
||||||
|
|
||||||
|
Swagger swagger = new Swagger()
|
||||||
|
.path("dummy", dummyPath);
|
||||||
|
|
||||||
|
fakeJavaCodegen.preprocessSwagger(swagger);
|
||||||
|
|
||||||
|
Assert.assertNull(swagger.getPath("dummy").getGet().getVendorExtensions().get("x-contentType"));
|
||||||
|
Assert.assertEquals(swagger.getPath("dummy").getPost().getVendorExtensions().get("x-contentType"), "application/json");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void preprocessSwaggerWithNoFormOrBodyParamsDoesNotSetContentType() {
|
||||||
|
Path dummyPath = new Path()
|
||||||
|
.post(new Operation())
|
||||||
|
.get(new Operation());
|
||||||
|
|
||||||
|
Swagger swagger = new Swagger()
|
||||||
|
.path("dummy", dummyPath);
|
||||||
|
|
||||||
|
fakeJavaCodegen.preprocessSwagger(swagger);
|
||||||
|
|
||||||
|
Assert.assertNull(swagger.getPath("dummy").getGet().getVendorExtensions().get("x-contentType"));
|
||||||
|
Assert.assertNull(swagger.getPath("dummy").getPost().getVendorExtensions().get("x-contentType"));
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -37,7 +37,6 @@ public interface PetApi extends ApiClient.Api {
|
|||||||
*/
|
*/
|
||||||
@RequestLine("DELETE /pet/{petId}")
|
@RequestLine("DELETE /pet/{petId}")
|
||||||
@Headers({
|
@Headers({
|
||||||
"Content-Type: application/json",
|
|
||||||
"Accept: application/json",
|
"Accept: application/json",
|
||||||
"api_key: {apiKey}"
|
"api_key: {apiKey}"
|
||||||
})
|
})
|
||||||
@ -51,7 +50,6 @@ public interface PetApi extends ApiClient.Api {
|
|||||||
*/
|
*/
|
||||||
@RequestLine("GET /pet/findByStatus?status={status}")
|
@RequestLine("GET /pet/findByStatus?status={status}")
|
||||||
@Headers({
|
@Headers({
|
||||||
"Content-Type: application/json",
|
|
||||||
"Accept: application/json",
|
"Accept: application/json",
|
||||||
})
|
})
|
||||||
List<Pet> findPetsByStatus(@Param("status") List<String> status);
|
List<Pet> findPetsByStatus(@Param("status") List<String> status);
|
||||||
@ -73,7 +71,6 @@ public interface PetApi extends ApiClient.Api {
|
|||||||
*/
|
*/
|
||||||
@RequestLine("GET /pet/findByStatus?status={status}")
|
@RequestLine("GET /pet/findByStatus?status={status}")
|
||||||
@Headers({
|
@Headers({
|
||||||
"Content-Type: application/json",
|
|
||||||
"Accept: application/json",
|
"Accept: application/json",
|
||||||
})
|
})
|
||||||
List<Pet> findPetsByStatus(@QueryMap(encoded=true) Map<String, Object> queryParams);
|
List<Pet> findPetsByStatus(@QueryMap(encoded=true) Map<String, Object> queryParams);
|
||||||
@ -97,7 +94,6 @@ public interface PetApi extends ApiClient.Api {
|
|||||||
*/
|
*/
|
||||||
@RequestLine("GET /pet/findByTags?tags={tags}")
|
@RequestLine("GET /pet/findByTags?tags={tags}")
|
||||||
@Headers({
|
@Headers({
|
||||||
"Content-Type: application/json",
|
|
||||||
"Accept: application/json",
|
"Accept: application/json",
|
||||||
})
|
})
|
||||||
List<Pet> findPetsByTags(@Param("tags") List<String> tags);
|
List<Pet> findPetsByTags(@Param("tags") List<String> tags);
|
||||||
@ -119,7 +115,6 @@ public interface PetApi extends ApiClient.Api {
|
|||||||
*/
|
*/
|
||||||
@RequestLine("GET /pet/findByTags?tags={tags}")
|
@RequestLine("GET /pet/findByTags?tags={tags}")
|
||||||
@Headers({
|
@Headers({
|
||||||
"Content-Type: application/json",
|
|
||||||
"Accept: application/json",
|
"Accept: application/json",
|
||||||
})
|
})
|
||||||
List<Pet> findPetsByTags(@QueryMap(encoded=true) Map<String, Object> queryParams);
|
List<Pet> findPetsByTags(@QueryMap(encoded=true) Map<String, Object> queryParams);
|
||||||
@ -143,7 +138,6 @@ public interface PetApi extends ApiClient.Api {
|
|||||||
*/
|
*/
|
||||||
@RequestLine("GET /pet/{petId}")
|
@RequestLine("GET /pet/{petId}")
|
||||||
@Headers({
|
@Headers({
|
||||||
"Content-Type: application/json",
|
|
||||||
"Accept: application/json",
|
"Accept: application/json",
|
||||||
})
|
})
|
||||||
Pet getPetById(@Param("petId") Long petId);
|
Pet getPetById(@Param("petId") Long petId);
|
||||||
|
@ -22,7 +22,6 @@ public interface StoreApi extends ApiClient.Api {
|
|||||||
*/
|
*/
|
||||||
@RequestLine("DELETE /store/order/{orderId}")
|
@RequestLine("DELETE /store/order/{orderId}")
|
||||||
@Headers({
|
@Headers({
|
||||||
"Content-Type: application/json",
|
|
||||||
"Accept: application/json",
|
"Accept: application/json",
|
||||||
})
|
})
|
||||||
void deleteOrder(@Param("orderId") String orderId);
|
void deleteOrder(@Param("orderId") String orderId);
|
||||||
@ -34,7 +33,6 @@ public interface StoreApi extends ApiClient.Api {
|
|||||||
*/
|
*/
|
||||||
@RequestLine("GET /store/inventory")
|
@RequestLine("GET /store/inventory")
|
||||||
@Headers({
|
@Headers({
|
||||||
"Content-Type: application/json",
|
|
||||||
"Accept: application/json",
|
"Accept: application/json",
|
||||||
})
|
})
|
||||||
Map<String, Integer> getInventory();
|
Map<String, Integer> getInventory();
|
||||||
@ -47,7 +45,6 @@ public interface StoreApi extends ApiClient.Api {
|
|||||||
*/
|
*/
|
||||||
@RequestLine("GET /store/order/{orderId}")
|
@RequestLine("GET /store/order/{orderId}")
|
||||||
@Headers({
|
@Headers({
|
||||||
"Content-Type: application/json",
|
|
||||||
"Accept: application/json",
|
"Accept: application/json",
|
||||||
})
|
})
|
||||||
Order getOrderById(@Param("orderId") Long orderId);
|
Order getOrderById(@Param("orderId") Long orderId);
|
||||||
|
@ -58,7 +58,6 @@ public interface UserApi extends ApiClient.Api {
|
|||||||
*/
|
*/
|
||||||
@RequestLine("DELETE /user/{username}")
|
@RequestLine("DELETE /user/{username}")
|
||||||
@Headers({
|
@Headers({
|
||||||
"Content-Type: application/json",
|
|
||||||
"Accept: application/json",
|
"Accept: application/json",
|
||||||
})
|
})
|
||||||
void deleteUser(@Param("username") String username);
|
void deleteUser(@Param("username") String username);
|
||||||
@ -71,7 +70,6 @@ public interface UserApi extends ApiClient.Api {
|
|||||||
*/
|
*/
|
||||||
@RequestLine("GET /user/{username}")
|
@RequestLine("GET /user/{username}")
|
||||||
@Headers({
|
@Headers({
|
||||||
"Content-Type: application/json",
|
|
||||||
"Accept: application/json",
|
"Accept: application/json",
|
||||||
})
|
})
|
||||||
User getUserByName(@Param("username") String username);
|
User getUserByName(@Param("username") String username);
|
||||||
@ -85,7 +83,6 @@ public interface UserApi extends ApiClient.Api {
|
|||||||
*/
|
*/
|
||||||
@RequestLine("GET /user/login?username={username}&password={password}")
|
@RequestLine("GET /user/login?username={username}&password={password}")
|
||||||
@Headers({
|
@Headers({
|
||||||
"Content-Type: application/json",
|
|
||||||
"Accept: application/json",
|
"Accept: application/json",
|
||||||
})
|
})
|
||||||
String loginUser(@Param("username") String username, @Param("password") String password);
|
String loginUser(@Param("username") String username, @Param("password") String password);
|
||||||
@ -108,7 +105,6 @@ public interface UserApi extends ApiClient.Api {
|
|||||||
*/
|
*/
|
||||||
@RequestLine("GET /user/login?username={username}&password={password}")
|
@RequestLine("GET /user/login?username={username}&password={password}")
|
||||||
@Headers({
|
@Headers({
|
||||||
"Content-Type: application/json",
|
|
||||||
"Accept: application/json",
|
"Accept: application/json",
|
||||||
})
|
})
|
||||||
String loginUser(@QueryMap(encoded=true) Map<String, Object> queryParams);
|
String loginUser(@QueryMap(encoded=true) Map<String, Object> queryParams);
|
||||||
@ -134,7 +130,6 @@ public interface UserApi extends ApiClient.Api {
|
|||||||
*/
|
*/
|
||||||
@RequestLine("GET /user/logout")
|
@RequestLine("GET /user/logout")
|
||||||
@Headers({
|
@Headers({
|
||||||
"Content-Type: application/json",
|
|
||||||
"Accept: application/json",
|
"Accept: application/json",
|
||||||
})
|
})
|
||||||
void logoutUser();
|
void logoutUser();
|
||||||
|
@ -235,7 +235,6 @@
|
|||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<!-- test dependencies -->
|
<!-- test dependencies -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>junit</groupId>
|
<groupId>junit</groupId>
|
||||||
|
@ -235,7 +235,6 @@
|
|||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<!-- test dependencies -->
|
<!-- test dependencies -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>junit</groupId>
|
<groupId>junit</groupId>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user