Класс JsonView с Swagger @ApiResponse - PullRequest
0 голосов
/ 28 февраля 2019

У меня есть @JsonView с именем BankAccountView.Public, который помогает мне ограничить некоторые поля в BankAccount, потому что я не хочу отправлять все их атрибуты в публичной операции get.Моя проблема заключается в том, когда я пытаюсь указать его с помощью swagger, потому что, если я указываю BankAccount.class, он показывает весь объект вместо всех полей, указанных в моем @JsonView, но если я указываю BankAccount.Public.class, он показывает пустой объект.Не могли бы вы сказать мне, если возможно, что Swagger показывает только открытые поля?

Вот мой код:

// BankAccount Json View
public class BankAccountView {
    public static class Public {}
}
// BankAccount class
@ApiModel("BankAccount")
public class BankAccount {

    @ApiModelProperty
    @JsonView(BankAccountView.Public.class)
    private Long accountId;

    @ApiModelProperty
    private Long owner;

    @ApiModelProperty
    @NotBlank
    @JsonView(BankAccountView.Public.class)
    private String currency;

    @ApiModelProperty
    @NotBlank
    @JsonView(BankAccountView.Public.class)
    private String bankName;

    @ApiModelProperty
    @JsonView(BankAccountView.Public.class)
    private BankAccountType accountType;

    @ApiModelProperty
    @JsonView(BankAccountView.Public.class)
    private BankAccountStatus status;

    @ApiModelProperty
    private Instant verificationDate;

    @ApiModelProperty
    @JsonView(BankAccountView.Public.class)
    private String mask;
}
// BankAccountController class

    @ApiOperation(value = "Fetch a list of all bank accounts")
    @JsonView({BankAccountView.Public.class})
    @ApiResponses(value = {
            @ApiResponse(code = 200, message = "Bank accounts successfully retrieved", response = BankAccountView.Public.class, responseContainer = "List"),
            @ApiResponse(code = 400, message = "Validation failed", response = ApiHttpClientErrorException.class),
            @ApiResponse(code = 403, message = "User is not an employee", response = ResourceForbiddenException.class),
            @ApiResponse(code = 404, message = "User not found", response = NoSuchElementException.class),
            @ApiResponse(code = 500, message = "Internal server error", response = ApiHttpServerErrorException.class)
    })
    @GetMapping
    public List<BankAccount> getAllBankAccounts() {
        return service.getAll();
    }

Большое спасибо!:)

1 Ответ

0 голосов
/ 28 февраля 2019
If you're using Jackson, you can use @JsonIgnore.

иначе установить скрытое значение true для отдельных свойств

@ApiModelProperty(position = 1, required = true, hidden=true, notes = "used to display user name")
...