2017-10-10 16 views
0

私はスワッガーファイルを検証しようとしています(私のグラブルビルドの一部として)。 swagger-parserを試してみましたが、スワッガーがまったく解析しないとエラーが発生しますが、http://editor.swagger.io/#/のように問題を捕まえていないようです。 (これは私が探しているものです)スワッガーの妥当性確認

確かに、これは既にこれを行う方法が必要な共通の問題ですか?

build.gradle:いくつかの明白な問題と

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

シンプル闊歩:と

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 

そして、それをテストするための単純なクラスを(私が試した何

最終的にこれをグラデーションに移動する予定):

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()); 
    } 
} 
} 

上記のswaggerには複数の問題がありますが、http://editor.swagger.io/に見られるように、swagger-parserはそれらについて教えてくれません。

答えて

0

私はSwagger 2.0を追加の依存関係なしでファイルで実行していました。これはエラーなしで動作し、実装は次のとおりです。

Swagger20Parser swaggerParser = new Swagger20Parser();