【问题标题】:Validating a swagger验证招摇
【发布时间】:2017-10-10 06:31:28
【问题描述】:

我正在尝试验证 swagger 文件(实际上是我的 gradle 构建的一部分)。 我尝试过使用swagger-parser,但如果swagger 根本不解析,它会起作用并给出错误,但它似乎没有像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: apiteam@swagger.io
  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

还有一个简单的类来测试它(目的是最终将它转移到 gradle):

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 没有告诉我这些问题。

【问题讨论】:

    标签: java swagger swagger-2.0


    【解决方案1】:

    我使用您的文件运行 Swagger 2.0,没有任何其他依赖项。它没有任何错误,这是实现:

    Swagger20Parser swaggerParser = new Swagger20Parser();
    

    【讨论】:

      猜你喜欢
      • 2020-09-30
      • 1970-01-01
      • 2016-07-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-20
      相关资源
      最近更新 更多