SpringFox - ocultar determinados campos em Swagger-ui que não são necessários para a chamada a um ponto final

RabidOrange;

Eu gostaria de saber se há alguma maneira de fazer SpringFox para não mostrar todos os campos de uma determinada entidade que não são necessários na chamada para um terminal específico.

Por exemplo:

Tendo a seguinte entidade:

public class Car {
    long id;
    String name;
    int wheels;
    String type;
    boolean canFly;
}

E os seguintes parâmetros:

@RequestMapping(method = RequestMethod.GET,
                produces = MediaType.APPLICATION_JSON_VALUE)
public Car get(@RequestParam(value = "carId", required = true) long projectId) {
    return carService.get(carId);
}

@RequestMapping(method = RequestMethod.POST,
                consumes = MediaType.APPLICATION_JSON_VALUE,
                produces = MediaType.APPLICATION_JSON_VALUE)
public Car create(@RequestBody Car car) {
    return carService.create(car);
}

@RequestMapping(method = RequestMethod.PUT,
                consumes = MediaType.APPLICATION_JSON_VALUE,
                produces = MediaType.APPLICATION_JSON_VALUE)
public Car update(@RequestBody Car car) {
    return carService.update(car);
}

A coisa é que no criar carro só do nome do terminal e as rodas são necessários, mas na documentação mostra Swagger-ui todos os campos como se fossem necessários. Eu já tentei @JsonViewsmas não Springfox não lidar com eles ainda.

Existe alguma maneira de evitar isso?

Vlad Maier:

Utilizar a @ApiModelProperty(de io.swagger.annotations)

  • Com requiredvocê define se a propriedade é obrigatória ou opcional.
  • Com hiddenvocê pode ocultar a propriedade em Swagger UI, no entanto, se ele é definido é devolvido qualquer maneira.

Por exemplo:

public class Car {

    @ApiModelProperty(value = "id", required = true)
    long id;

    @ApiModelProperty(value = "wheels", required = true)
    int wheels;

    @ApiModelProperty(value = "name", hidden = true)
    String name;

    @ApiModelProperty(value = "type", hidden = true)
    String type;

    @ApiModelProperty(value = "canFly", hidden = true)
    boolean canFly;
}

Desde que você usar o mesmo modelo para solicitação e resposta (com o exemplo acima) os atributos na documentação para GET endpoint também será escondido (manter isso em mente). Se você não quer que tal comportamento, em seguida, usar modelos separados.

Acho que você gosta

Origin http://43.154.161.224:23101/article/api/json?id=219756&siteId=1
Recomendado
Clasificación