【问题标题】:Spring Auto Rest Docs documents all Json subTypesSpring Auto Rest Docs 记录了所有 Json 子类型
【发布时间】:2020-05-18 15:11:32
【问题描述】:

我有一个带有两个操作 /balance 和 /transactions 的 Rest 服务来获取客户的余额和交易。

这个操作的返回类型是 BalanceResponse 和 TransactionResponse,这两个类型都是从 Response 扩展而来的

在记录 /balance 服务操作时,它还会在第二个 subType(TransactionResponse) 中列出响应字段。

如何只显示与其返回类型对应的字段? 如果它的 /balance 则显示(状态、余额和限制),如果它的 /transaction 仅在响应字段中显示(状态和交易列表)

有人可以告诉我如何处理文档中的基本继承类型

请在下面找到代码 sn-p 和 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

【问题讨论】:

  • 能否添加资源/控制器方法代码?我需要看看返回类型是什么。

标签: asciidoc spring-restdocs spring-auto-restdocs


【解决方案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();
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多