Spring Auto Rest Docs документирует все подтипы Json

У меня есть услуга Rest с двумя операциями / балансом и / транзакциями для получения баланса и транзакций клиента.

Тип возврата этой операции - BalanceResponse и TransactionResponse, и оба эти типа являются расширением от Response.

при документировании операций службы /balance также перечисляются поля ответа во втором подтипе (TransactionResponse).

Как отобразить только поля, соответствующие его типу возврата? Если его / баланс, то отображать (статус, баланс и ограничения), а Если его / транзакция отображается только (статус и список транзакций) в поле Ответ

Может кто-нибудь, дайте мне знать, как обрабатывать в основном типы наследования в документах

Пожалуйста, найдите ниже фрагмент кода и документ, созданный Auto RestDoc.

//Base class
@JsonTypeInfo(use = NAME, include = PROPERTY, property = "type", visible = true)
@JsonSubTypes({
        @JsonSubTypes.Type(value = BalanceResponse.class, name = "BalanceResponse"),
        @JsonSubTypes.Type(value = TransactionsResponse.class, name = "TransactionResponse")})
public class Response {
    public Status status;
....
...
    public Response(StatusCode status) {
        this.status = new Status(status.getCode(), status.getDescription());
    }

}
// Type1: BalanceResponse
@JsonPropertyOrder({ "status", "balance", "restrictions" })
public class BalanceResponse extends Response {
    /**
     * The balance of this account
     */
    public int balance = -1; 

    /**
     * List of limitations on this account.
     */
    public List<String> restrictions = Collections.emptyList();
}

// SubType-2 TransactionResponse
public class TransactionsResponse extends Response {
    public List<Transaction> transactions;

введите описание изображения здесь Auto RestDoc Response field

1 ответ

Вам необходимо вернуть определенный подтип в методе вашего контроллера, чтобы Spring Auto Rest Docs выводил только поля этого типа. Если вы вернете родительский тип, тогда ответ может быть любым, и SARD выведет все возможные поля всех типов.

    // returns all subtype fields
    public Response anything() {
        return new BalanceResponse();
    }

    // returns only BalanceResponse fields
    public BalanceResponse balances() {
        return new BalanceResponse();
    }
Другие вопросы по тегам