spec guru example java spring-mvc swagger

java - guru - Swagger para el proyecto Spring MVC



swagger example java (1)

En cuanto a la integración de Swagger en Spring MVC:

Swagger no muestra la documentación GET/PUT/POST para @RequestMapping

En mi aplicación de servicio web Spring MVC Rest, tengo un controlador de inicio de sesión y un controlador de estudiante. Acabo de configurar Swagger para generar la documentación de Rest API. Referencia: http://java.dzone.com/articles/how-configure-swagger-generate

Pregunta : Sin embargo, Swagger solo muestra la ruta de nivel de clase, y supongo que no muestra el nivel de clase @RequestMapping . , Las asignaciones de nivel de método se ignoran. ¿Alguna razón por qué ?

@Controller @RequestMapping(value = "/login") public class LoginController { @RestController @RequestMapping(value = "/students/") public class StudentController { @RequestMapping(value = "{departmentID}", method = RequestMethod.GET) public MyResult getStudents(@PathVariable String departmentID) { // code } @RequestMapping(value = "student", method = RequestMethod.GET) public MyResult getStudentInfo( @RequestParam(value = "studentID") String studentID, @RequestParam(value = "studentName") String studentName) { //code } @RequestMapping(value = "student", method = RequestMethod.POST) public ResponseEntity<Student> updateStudentInfo(@RequestBody Student student) { //code }

Configuración de Swagger:

@Configuration @EnableSwagger public class SwaggerConfiguration { private SpringSwaggerConfig swaggerConfig; @Autowired public void setSpringSwaggerConfig(SpringSwaggerConfig swaggerConfig) { this.swaggerConfig = swaggerConfig; } @Bean // Don''t forget the @Bean annotation public SwaggerSpringMvcPlugin customImplementation() { return new SwaggerSpringMvcPlugin(this.swaggerConfig).apiInfo( apiInfo()).includePatterns("/.*"); } private ApiInfo apiInfo() { ApiInfo apiInfo = new ApiInfo("my API", "API for my app", "", "[email protected]", "License type", "something like a License URL"); return apiInfo; }

Salida:

http://localhost:8080/studentapplication/api-docs { apiVersion: "1.0", swaggerVersion: "1.2", apis: [ { path: "/default/login-controller", description: "Login Controller" }, { path: "/default/student-controller", description: "Student Controller" } ], info: { title: "Student API", description: "API for Student", termsOfServiceUrl: "StudentApp API terms of service", contact: "[email protected]", license: "sometext", licenseUrl: "License URL" } }

Actualizar:

también necesita la configuración siguiente en el archivo XML de configuración de primavera, como se menciona en https://github.com/martypitt/swagger-springmvc

<!-- to enable the default documentation controller--> <context:component-scan base-package="com.mangofactory.swagger.controllers"/> <!-- to pick up the bundled spring configuration--> <context:component-scan base-package="com.mangofactory.swagger.configuration"/> <!-- Direct static mappings --> <mvc:resources mapping="*.html" location="/, classpath:/swagger-ui"/> <!-- Serve static content--> <mvc:default-servlet-handler/>


Cualquiera que sea la salida que se vea ahora es buena, no veremos la interfaz de usuario swagger y las asignaciones de niveles del método GET/POST/PUT aquí en esta salida JSON . Así que está bien. Muestra solo la ruta de nivel de clase.

Para ver la interfaz de usuario de Swagger real con las asignaciones de nivel de método GET/POST/PUT , y las URL, tenemos que descargar SwaggerUI que está disponible aquí: https://github.com/swagger-api/swagger-ui

Y luego navegue a este archivo index.html : swagger-ui-master/swagger-ui-master/dist/index.html aquí, edite la URL JSON de origen en la URL de api-docs de su aplicación:

es decir:

$(function () { window.swaggerUi = new SwaggerUi({ url: "studentapplication/api-docs", dom_id: "swagger-ui-container", supportedSubmitMethods: [''get'', ''post'', ''put'', ''delete''],

¡Ahora ves todo!

Estaba solo a un paso de distancia ...