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 ...