Swagger: удалить свойства класса из значения примера параметра

Я использую Swagger для документирования REST API.

У меня есть такой класс:

public class Source{ 
    private String url;
    private String category;
    private String label;
    ... 
}

В настоящее время я использую @ApiImplicitParam, чтобы установить для dataType значение Source.class, но у меня есть несколько запросов POST, которые получают JSON в качестве параметра тела, скажем, с одной переменной из них, например:

{"label": "labelA"}

Из-за ранее установленного типа данных пример значения, отображаемого пользовательским интерфейсом Swagger, представляет собой целый Source.class, что-то вроде этого:

{
    "url": "string",
    "category": "string",
    "label": "string",
    ...
}

Могу ли я каким-то образом обрезать значение примера, отображаемое пользовательским интерфейсом Swagger, для каждого отдельного запроса? Я имею в виду, что запрос getSourceFromUrl() должен получить JSON, содержащий только поле URL, и пример должен отображать именно это, а не полный JSON Source.class.

Спасибо всем заранее!

ОБНОВЛЕНИЕ

Я использую JAX-RS. Пожалуйста, попросите меня предоставить дополнительную информацию, если это необходимо.


person cr1ng3    schedule 26.07.2016    source источник
comment
Возможный дубликат Исключить модели или свойства из ответа swagger   -  person Helen    schedule 23.01.2018


Ответы (2)


Если вы используете springfox-swagger2, для этого есть аннотация @ApiModelProperty.

Пример:

@ApiModelProperty(required = false, hidden = true)
private String label;
person WannaBeGeek    schedule 26.07.2016
comment
Большое спасибо за ответ. Моя проблема в том, что у меня есть несколько конечных точек, и я хочу использовать один и тот же класс в качестве значения примера параметра для всех из них, но с другим набором свойств класса. Я использую JAX-RS (я обновлю свой пост). P.S.: Я считаю, что @ApiModelProperty можно использовать внутри класса, и это повлияет на все конечные точки, которые используют этот класс в качестве примера значения. Я ошибся? - person cr1ng3; 26.07.2016

На данный момент вы не можете сделать такую ​​вещь. Вы должны создать другой класс для каждого случая.

См. в github swagger-core: https://github.com/swagger-api/swagger-core/issues/1863#issuecomment-237339565

person cr1ng3    schedule 10.08.2016