我正在尝试使用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;
}
}
说实话,这是我第一次大摇大摆。
所以我的期望是错误的,我根本想存档什么呢?还是这是招摇代码库中的错误?
谢谢, 扬