2017-10-10 3 views
0

Ich versuche, Swagger-Dateien zu validieren (als Teil meines Gradle Build tatsächlich). Ich habe versucht mit swagger-parser, aber während das funktioniert und gibt einen Fehler, wenn der Swagger überhaupt nicht analysiert wird, scheint es keine Probleme zu fangen, wie http://editor.swagger.io/#/ tut. (was ist, was ich suche)Validieren eines Swagger

Sicher ist das ein genug genug Problem, dass es einen Weg geben muss, dies bereits zu tun?

Was ich habe versucht:

build.gradle:

 compile("io.swagger:swagger-parser:1.0.31") 

Eine einfache Prahlerei mit einigen offensichtlichen Problemen:

swagger: '2.0' 
info: 
    description: 'This is a sample server Petstore server.' 
    version: 1.0.0 
    title: Swagger Petstore 
    termsOfService: http://swagger.io/terms/ 
    contact: 
    email: [email protected] 
    license: 
    name: Apache 2.0 
    url: http://www.apache.org/licenses/LICENSE-2.0.html 
host: petstore.swagger.io 
basePath: /v2 
paths: 
    /pet: 
    post: 
     tags: 
     - pet 
     summary: Add a new pet to the store 
     description: '' 
     operationId: addPet 
     parameters: 
     - in: body 
     name: body 
     description: Pet object that needs to be added to the store 
     required: true 
     schema: 
      type: '#/definitions/Pet' 
     responses: 
     '405': 
      description: Invalid input 
     security: 
     - petstore_auth: 
     - write:pets 
     - read:pets 
definitions: 
    Category: 
    type: petObject 
    properties: 
     id: 
     type: integer 
     format: int64 
     name: 
     type: string 
    xml: 
     name: Category 
    Pet: 
    type: object 
    required: 
    - name 
    - photoUrls 
    properties: 
     id: 
     type: integer 
     format: int64 
     category: 
     $ref: '#/definitions/Category' 
     name: 
     type: string 
     example: doggie 
    xml: 
     name: Pet 

Und eine einfache Klasse, um es zu testen (mit der Absicht, dies zu Gradle schließlich zu verschieben):

class SwaggerTest { 

public static void main(String[] args) { 
    SwaggerTest st = new SwaggerTest(); 
    st.validate(); 
} 

private void validate() { 
    try { 

     String content = new String(Files.readAllBytes(Paths.get("petstore.yml"))); 
     SwaggerParser swaggerParser = new SwaggerParser(); 
     SwaggerDeserializationResult result = swaggerParser.readWithInfo(content); 
     swaggerParser.parse(content); 

     Swagger swagger = result.getSwagger(); 
     if (swagger == null) { 
      System.out.println("Unable to validate swagger"); 
     }else { 
      System.out.println("Read the swagger"); 
     } 
     List<String> messageList = result.getMessages(); 
     for(String message: messageList) { 
      System.out.println(message);     
     } 


    } catch(Exception e) { 
     System.out.println("Error!! "+ e.getMessage()); 
    } 
} 
} 

Der oben genannte Swagger hat mehrere Probleme, wie Sie in http://editor.swagger.io/ sehen können, aber Swagger-Parser sagt mir nicht über sie.

Antwort

0

Ich habe Swagger 2.0 mit Ihrer Datei ohne zusätzliche Abhängigkeiten ausgeführt. Es funktioniert ohne Fehler, hier ist die Implementierung:

Swagger20Parser swaggerParser = new Swagger20Parser(); 
Verwandte Themen