From 25220a662f874da7fd553c0c0d558d23232f1221 Mon Sep 17 00:00:00 2001 From: Amit Kashyap Date: Tue, 29 Jan 2019 22:47:30 +1100 Subject: [PATCH] Added swagger documentation for all the existing API endpoints --- backend/pom.xml | 20 +++++++++ .../configuration/SpringFoxConfiguration.java | 42 +++++++++++++++++++ .../controller/CategoryServiceController.java | 5 +++ .../InstructorFeedbackController.java | 9 +++- .../controller/ParticipantController.java | 7 +++- 5 files changed, 81 insertions(+), 2 deletions(-) create mode 100644 backend/src/main/java/com/onemda/onemdabackend/configuration/SpringFoxConfiguration.java diff --git a/backend/pom.xml b/backend/pom.xml index cd152ec..9af52b9 100644 --- a/backend/pom.xml +++ b/backend/pom.xml @@ -44,6 +44,26 @@ org.springframework.boot spring-boot-starter-aop + 2.1.2.RELEASE + + + + + io.springfox + springfox-swagger2 + 2.9.2 + + + + com.google.guava + guava + 25.0-jre + + + + io.springfox + springfox-swagger-ui + 2.9.2 diff --git a/backend/src/main/java/com/onemda/onemdabackend/configuration/SpringFoxConfiguration.java b/backend/src/main/java/com/onemda/onemdabackend/configuration/SpringFoxConfiguration.java new file mode 100644 index 0000000..8235d65 --- /dev/null +++ b/backend/src/main/java/com/onemda/onemdabackend/configuration/SpringFoxConfiguration.java @@ -0,0 +1,42 @@ +package com.onemda.onemdabackend.configuration; + +import java.util.Collections; + +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.service.ApiInfo; +import springfox.documentation.service.Contact; +import springfox.documentation.spi.DocumentationType; +import springfox.documentation.spring.web.plugins.Docket; +import springfox.documentation.swagger2.annotations.EnableSwagger2; + +@Configuration +@EnableSwagger2 +public class SpringFoxConfiguration { + + @Bean + public Docket apiDocket() { + return new Docket(DocumentationType.SWAGGER_2) + .select() + .apis(RequestHandlerSelectors.basePackage("com.onemda.onemdabackend")) //it will generate documentation for controllers as well as models + .paths(PathSelectors.any()) + .build() + .apiInfo(getApiInfo()); // - This is to override default API infomation provided by Swagger + } + + private ApiInfo getApiInfo() { + return new ApiInfo( + "Onemda API Details", //Title + "This is the API specification page of OneMda", //Description + "VERSION 1.0", + "TERMS OF SERVICE URL", + new Contact("OneMda","https://www.onemda.com.au/","onemda@onemda.com.au"), + "Reg No A0025065T", + "LICENSE URL", + Collections.emptyList() + ); + } +} diff --git a/backend/src/main/java/com/onemda/onemdabackend/controller/CategoryServiceController.java b/backend/src/main/java/com/onemda/onemdabackend/controller/CategoryServiceController.java index 4214bbd..4221406 100644 --- a/backend/src/main/java/com/onemda/onemdabackend/controller/CategoryServiceController.java +++ b/backend/src/main/java/com/onemda/onemdabackend/controller/CategoryServiceController.java @@ -11,10 +11,14 @@ import com.onemda.onemdabackend.model.ServiceCategory; import com.onemda.onemdabackend.service.CategoryService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; + @CrossOrigin @RestController @RequestMapping("/api/onemda") +@Api(description = "Set of endpoints for dealing with service categories") public class CategoryServiceController { @Autowired @@ -22,6 +26,7 @@ public class CategoryServiceController { @CrossOrigin @GetMapping("/categories") + @ApiOperation("Returns list of all the available service categories") public List getAllServiceCategories(){ return categoryService.getAllTheServiceCategory(); } diff --git a/backend/src/main/java/com/onemda/onemdabackend/controller/InstructorFeedbackController.java b/backend/src/main/java/com/onemda/onemdabackend/controller/InstructorFeedbackController.java index ece5020..e684d61 100644 --- a/backend/src/main/java/com/onemda/onemdabackend/controller/InstructorFeedbackController.java +++ b/backend/src/main/java/com/onemda/onemdabackend/controller/InstructorFeedbackController.java @@ -14,10 +14,15 @@ import com.onemda.onemdabackend.model.InstructorFeedback; import com.onemda.onemdabackend.service.InstructorFeedbackService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; + @CrossOrigin @RestController @RequestMapping("/api/onemda") +@Api(description = "Set of endpoints for getting and posting instructor feedbacks") public class InstructorFeedbackController { @Autowired @@ -25,12 +30,14 @@ public class InstructorFeedbackController { @CrossOrigin @PostMapping("/instructorfeedback") - public void postInstructorFeedback(@RequestBody InstructorFeedback instructorFeedback){ + @ApiOperation("Add instructor feedback into database") + public void postInstructorFeedback(@ApiParam("Instructor feedback to be added") @RequestBody InstructorFeedback instructorFeedback){ instructorFeedback.setSubmittedAt(new Date()); instructorFeedbackService.addInstructorFeedback(instructorFeedback); } @GetMapping("/instructorfeedback") + @ApiOperation("Returns all the instructor feedbacks available") public List getInstructorFeedback(){ return instructorFeedbackService.getInstructorFeedback(); } diff --git a/backend/src/main/java/com/onemda/onemdabackend/controller/ParticipantController.java b/backend/src/main/java/com/onemda/onemdabackend/controller/ParticipantController.java index f029712..cbedcac 100644 --- a/backend/src/main/java/com/onemda/onemdabackend/controller/ParticipantController.java +++ b/backend/src/main/java/com/onemda/onemdabackend/controller/ParticipantController.java @@ -2,7 +2,6 @@ import java.util.List; -import com.onemda.onemdabackend.service.ParticipantService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.CrossOrigin; import org.springframework.web.bind.annotation.GetMapping; @@ -10,10 +9,15 @@ import org.springframework.web.bind.annotation.RestController; import com.onemda.onemdabackend.model.Participant; +import com.onemda.onemdabackend.service.ParticipantService; + +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; @CrossOrigin @RestController @RequestMapping("/api/onemda") +@Api(description = "Set of endpoints for dealing with participants") public class ParticipantController { @Autowired @@ -21,6 +25,7 @@ public class ParticipantController { @CrossOrigin @GetMapping("/participants") + @ApiOperation("Returns list of all the participants") public List getAllTheParticipants(){ return participantService.getAllTheParticipants(); }