2017-10-10 3 views
0

swagger 파일의 유효성을 검사하려고합니다 (실제로 gradb 빌드의 일부로). swagger-parser을 사용해 보았습니다. 그러나 swagger가 전혀 구문 분석하지 않으면 작동하고 오류가 발생하지만 문제는 http://editor.swagger.io/#/에서 발생하지 않습니다. (내가 뭘 찾고 있는지)swagger의 유효성 검사

분명히 이것은 이것을하기위한 방법이 있어야만하는 공통된 문제일까요?

나는 시도했다 :

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