BAEL-4345 add code for the swagger specify two responses with the same code article
This commit is contained in:
parent
a20006b451
commit
26483e6232
|
@ -0,0 +1,2 @@
|
||||||
|
## Relevant Articles:
|
||||||
|
|
|
@ -0,0 +1,75 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
<artifactId>spring-boot-swagger-2</artifactId>
|
||||||
|
<version>0.1.0-SNAPSHOT</version>
|
||||||
|
<name>spring-boot-swagger-2</name>
|
||||||
|
<packaging>jar</packaging>
|
||||||
|
<description>Module For Spring Boot Swagger</description>
|
||||||
|
|
||||||
|
<parent>
|
||||||
|
<groupId>com.baeldung.spring-boot-modules</groupId>
|
||||||
|
<artifactId>spring-boot-modules</artifactId>
|
||||||
|
<version>1.0.0-SNAPSHOT</version>
|
||||||
|
</parent>
|
||||||
|
|
||||||
|
<properties>
|
||||||
|
<springfox.version>3.0.0</springfox.version>
|
||||||
|
<swagger-codegen-maven-plugin.version>3.0.34</swagger-codegen-maven-plugin.version>
|
||||||
|
<springdoc.version>1.6.10</springdoc.version>
|
||||||
|
</properties>
|
||||||
|
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-starter-web</artifactId>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springdoc</groupId>
|
||||||
|
<artifactId>springdoc-openapi-ui</artifactId>
|
||||||
|
<version>${springdoc.version}</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>io.springfox</groupId>
|
||||||
|
<artifactId>springfox-oas</artifactId>
|
||||||
|
<version>${springfox.version}</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>io.springfox</groupId>
|
||||||
|
<artifactId>springfox-swagger-ui</artifactId>
|
||||||
|
<version>${springfox.version}</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>javax.validation</groupId>
|
||||||
|
<artifactId>validation-api</artifactId>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
|
||||||
|
<build>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<groupId>io.swagger.codegen.v3</groupId>
|
||||||
|
<artifactId>swagger-codegen-maven-plugin</artifactId>
|
||||||
|
<version>${swagger-codegen-maven-plugin.version}</version>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<goals>
|
||||||
|
<goal>generate</goal>
|
||||||
|
</goals>
|
||||||
|
<configuration>
|
||||||
|
<inputSpec>${project.basedir}/src/main/resources/static/api_3.yaml</inputSpec>
|
||||||
|
<language>spring</language>
|
||||||
|
<configOptions>
|
||||||
|
<java8>true</java8>
|
||||||
|
<interfaceOnly>true</interfaceOnly>
|
||||||
|
</configOptions>
|
||||||
|
</configuration>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
|
|
||||||
|
</project>
|
|
@ -0,0 +1,13 @@
|
||||||
|
package com.baeldung.tworesponses;
|
||||||
|
|
||||||
|
import org.springframework.boot.SpringApplication;
|
||||||
|
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||||
|
|
||||||
|
@SpringBootApplication
|
||||||
|
public class Application {
|
||||||
|
|
||||||
|
public static void main(String args[]) {
|
||||||
|
SpringApplication.run(Application.class, args);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,27 @@
|
||||||
|
package com.baeldung.tworesponses;
|
||||||
|
|
||||||
|
import org.springdoc.core.SpringDocConfigProperties;
|
||||||
|
import org.springdoc.core.SpringDocConfiguration;
|
||||||
|
import org.springdoc.core.providers.ObjectMapperProvider;
|
||||||
|
import org.springframework.context.annotation.Bean;
|
||||||
|
import org.springframework.context.annotation.Configuration;
|
||||||
|
|
||||||
|
@Configuration
|
||||||
|
public class Config {
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
SpringDocConfiguration springDocConfiguration() {
|
||||||
|
return new SpringDocConfiguration();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
SpringDocConfigProperties springDocConfigProperties() {
|
||||||
|
return new SpringDocConfigProperties();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
ObjectMapperProvider objectMapperProvider(SpringDocConfigProperties springDocConfigProperties) {
|
||||||
|
return new ObjectMapperProvider(springDocConfigProperties);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,2 @@
|
||||||
|
springdoc.api-docs.enabled=false
|
||||||
|
springdoc.swagger-ui.url=/api_3.yaml
|
|
@ -0,0 +1,45 @@
|
||||||
|
swagger: 2.0.0
|
||||||
|
info:
|
||||||
|
title: Demo api
|
||||||
|
description: Demo api for the article 'specify two responses with same code based on optional parameter'
|
||||||
|
version: 0.1.0
|
||||||
|
paths:
|
||||||
|
/vehicle:
|
||||||
|
get:
|
||||||
|
responses:
|
||||||
|
'200':
|
||||||
|
description: Get a vehicle. Can contain either a Car or a Bike
|
||||||
|
schema:
|
||||||
|
$ref: '#/definitions/CarOrBike'
|
||||||
|
examples:
|
||||||
|
application/json:
|
||||||
|
owner: baeldung
|
||||||
|
plate: AEX305
|
||||||
|
speed:
|
||||||
|
definitions:
|
||||||
|
Car:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
owner:
|
||||||
|
type: string
|
||||||
|
plate:
|
||||||
|
type: string
|
||||||
|
Bike:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
owner:
|
||||||
|
type: string
|
||||||
|
speed:
|
||||||
|
type: integer
|
||||||
|
CarOrBike:
|
||||||
|
description: a car will have an owner and a plate, whereas a bike has an owner and a speed
|
||||||
|
type: object
|
||||||
|
required:
|
||||||
|
- owner
|
||||||
|
properties:
|
||||||
|
owner:
|
||||||
|
type: string
|
||||||
|
plate:
|
||||||
|
type: string
|
||||||
|
speed:
|
||||||
|
type: integer
|
|
@ -0,0 +1,44 @@
|
||||||
|
openapi: 3.0.0
|
||||||
|
info:
|
||||||
|
title: Demo api
|
||||||
|
description: Demo api for the article 'specify two responses with same code based on optional parameter'
|
||||||
|
version: 0.1.0
|
||||||
|
paths:
|
||||||
|
/vehicle:
|
||||||
|
get:
|
||||||
|
responses:
|
||||||
|
'200':
|
||||||
|
description: Get a vehicle
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
oneOf:
|
||||||
|
- $ref: '#/components/schemas/Car'
|
||||||
|
- $ref: '#/components/schemas/Bike'
|
||||||
|
examples:
|
||||||
|
car:
|
||||||
|
summary: an example of car
|
||||||
|
value:
|
||||||
|
owner: baeldung
|
||||||
|
plate: AEX305
|
||||||
|
bike:
|
||||||
|
summary: an example of bike
|
||||||
|
value:
|
||||||
|
owner: john doe
|
||||||
|
speed: 25
|
||||||
|
components:
|
||||||
|
schemas:
|
||||||
|
Car:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
owner:
|
||||||
|
type: string
|
||||||
|
plate:
|
||||||
|
type: string
|
||||||
|
Bike:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
owner:
|
||||||
|
type: string
|
||||||
|
speed:
|
||||||
|
type: integer
|
Loading…
Reference in New Issue