Swagger Codegen生成的某些媒体类型的代码丢失方法

时间:2019-03-29 06:10:01

标签: java swagger openapi swagger-codegen

我正在尝试使用Swagger 3建立一个由mediatypes版本化的REST api。我想根据请求中的accept标头返回不同的对象。

因此,我在http://editor.swagger.io中创建了一个yaml文件,并生成了服务器代码(jaxrs-cxf)。但是生成的代码始终只包含第一种对象类型的方法。

我将其分解为一个相当简单的yaml文件。生成服务器代码时,仅生成一种方法:

openapi: 3.0.6
info:
  title: pet test api
  description: testapi for mime based versioning
  version: 1.0.0
servers:
  - url: https://animal.com/pets
paths:
  /pet:
    get:
      tags: 
        - pets
      summary: pets
      description: get cat or dog
      responses: 
        '200':
          description: get specific pet
          content:
            application/cat+json:
              schema:
                $ref: '#/components/schemas/cat'
            application/dog+json:
              schema:
                $ref: '#/components/schemas/dog'
components:
  schemas:
    cat:
      type: object
      properties:
        id:
          type: integer
        name:
          type: string
    dog:
      type: object
      properties:
        name:
          type: string
        age:
          type: integer

我的期望是至少在main / java / io.swagger.api.impl.PetsApiServiceImpl.java

中生成两个方法
public class PetsApiServiceImpl implements PetsApi {
    /**
     * pets
     *
     * get cat or dog
     *
     */
public Cat petGet() {
        // TODO: Implement...

        return null;
    }

public Dog petGet() {
        // TODO: Implement...

        return null;
    }
}

但是实际上只生成一种方法:

public class PetsApiServiceImpl implements PetsApi {
    /**
     * pets
     *
     * get cat or dog
     *
     */
    public Cat petGet() {
        // TODO: Implement...

        return null;
    }

}


说实话,这是我第一次大摇大摆。

所以我的期望是错误的,我根本想存档什么呢?还是这是招摇代码库中的错误?

谢谢, 扬

0 个答案:

没有答案