This is the Dependency you have to add
===================================================
1.Springfox Swagger UI
<!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger-ui -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.6.1</version>
</dependency>
2. springfox swagger2
<!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.6.1</version>
</dependency>
--------------------------------------------------------------------
2. Write Controller class like that
package com.app.rest;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import com.app.request.PassengerInfo;
import com.app.responce.TicketInfo;
@RestController
public class AirIndiaRestController {
@PostMapping(value="/bootFlightTicket",
consumes= {
"application/json",
"application/xml"
},
produces= {
"application/json",
"application/xml"
}
)
public ResponseEntity<TicketInfo> bookTicket(@RequestBody PassengerInfo info){
//Write a logic to book ticket
//send ticket info
TicketInfo ticket=new TicketInfo();
ticket.setName(info.getFname()+" "+info.getLname());
ticket.setFrom(info.getFrom());
ticket.setTo(info.getTo());
ticket.setJourneyDate(info.getJourneyDate());
ticket.setTicketPrice("4560.00 INR");
ticket.setTicketStatus("CONFORMED");
return new ResponseEntity<TicketInfo>(ticket,HttpStatus.CREATED);
}
}
-------------------------------------------------------------------------------------------
3. Write one configuration class of create swagger documentation
package com.app.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket rstApi() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.basePackage("com.app.rest"))
.paths(PathSelectors.any())
.build();
}
}
===========================================================
For Testing Purpose you have to use a browser like that
Generate Swagger Documentations Url:
http://localhost:8023/swagger-ui.html
Generate Documentation then hit this URL:
http://localhost:8023/v2/api-docs
The output is like that:
{"swagger": "2.0","info": {"description": "Api Documentation","version": "1.0","title": "Api Documentation","termsOfService": "urn:tos","contact": {},"license": {"name": "Apache 2.0","url": "http://www.apache.org/licenses/LICENSE-2.0"}},"host": "localhost:8023","basePath": "/","tags": [{"name": "air-india-rest-controller","description": "Air India Rest Controller"}],"paths": {"/bootFlightTicket": {"post": {"tags": ["air-india-rest-controller"],"summary": "bookTicket","operationId": "bookTicketUsingPOST","consumes": ["application/xml","application/json"],"produces": ["application/xml","application/json"],"parameters": [{"in": "body","name": "info","description": "info","required": true,"schema": {"$ref": "#/definitions/PassengerInfo"}}],"responses": {"200": {"description": "OK","schema": {"$ref": "#/definitions/TicketInfo"}},"201": {"description": "Created"},"401": {"description": "Unauthorized"},"403": {"description": "Forbidden"},"404": {"description": "Not Found"}}}}},"definitions": {"TicketInfo": {"type": "object","properties": {"flightId": {"type": "string"},"from": {"type": "string"},"journeyDate": {"type": "string"},"name": {"type": "string"},"ticketPrice": {"type": "string"},"ticketStatus": {"type": "string"},"to": {"type": "string"}}},"PassengerInfo": {"type": "object","properties": {"fname": {"type": "string"},"from": {"type": "string"},"journeyDate": {"type": "string"},"lname": {"type": "string"},"ticketId": {"type": "string"},"to": {"type": "string"}}}}}
If you hit this you will get a result of your swagger
Comments
Post a Comment