2014-11-07 15 views
6

In Bezug auf Swagger in Spring MVC Integration:Swagger für Spring MVC-Projekt

Swagger ist die GET/PUT/POST Dokumentation für @RequestMapping

In meiner Spring MVC Erholung webservice Anwendung nicht angezeigt wird, habe ich einen Login-Controller und einen Student-Controller. Ich habe gerade Swagger konfiguriert, um die Rest-API-Dokumentation zu generieren. Referenz: http://java.dzone.com/articles/how-configure-swagger-generate

Frage: Allerdings ist Swagger nur die Klasse-Level-Pfad angezeigt wird, und ich denke, es ist nicht wven @RequestMapping die Klassenstufe anzeigt. , Die Zuordnungen auf Methodenebene werden ignoriert. Irgendein Grund warum?

@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 
    } 

Swagger Konfiguration:

@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; 
    } 

Ausgang:

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" 
} 
} 

Update:

Sie auch die unter Config im Frühjahr Config XML-Datei benötigen, wie erwähnt in 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/> 
+0

die Ausgabe von http überprüfen: // localhost: 8080/studentapplication/api-docs/default/login-Controller und http: // localhost: 8080/studentapplication/api-docs // default/student-controller – Ron

+0

HTTP-Status 404 – spiderman

+1

Okay. Ich weiß nicht, wie viel die Entwickler von swagger-springmvc in SO sehen. Wenn Sie also keine zeitnahe Antwort bekommen, würde ich vorschlagen, das Problem einfach in ihrem Repository zu lösen. – Ron

Antwort

2

Was auch immer Ausgang sehen jetzt gut ist, werden wir in diesem JSON Ausgabe finden Sie in der Prahlerei UI und die GET/POST/PUT Methode Ebene Mappings hier nicht. Das ist in Ordnung. Es zeigt nur den Pfad auf Klassenebene an.

Um den tatsächlichen Swagger UI mit den GET/POST/PUT Methode Level-Mappings zu sehen, und die URLs, müssen wir die SwaggerUI zum Download, die hier zur Verfügung: https://github.com/swagger-api/swagger-ui

Und dann diese index.html Datei navigieren: swagger-ui-master\swagger-ui-master\dist\index.html hier, bearbeiten Sie die Quelle JSON URL für Ihre Anwendung api-docs URL:

dh:

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

Jetzt siehst du alles !!!

ich nur einen Schritt davon war ...

Verwandte Themen