【问题标题】:How to set POJO Data on swagger for ApiModelProperty如何为 ApiModelProperty 在 swagger 上设置 POJO 数据
【发布时间】:2022-01-03 03:15:48
【问题描述】:

我的端点有以下 ApiModel -

public class CreateConfigRequest {
    @ApiModelProperty(example = "hive")
    String entityType;
    @ApiModelProperty(example = "imports")
    String entityNamespace;
    @ApiModelProperty(example = "hotel")
    String entityName;
    @ApiModelProperty(example = "{\"name\": \"hotel\", \"batch\": {\"type\": \"FullScan\"}}")
    JobConfig content;
}

JobConfig 是另一个 pojo 类。代码如下:

@Data
public class JobConfig {
    @NonNull private String name;
    @NonNull private BatchSpec batch;
    private ProfileConfig profile;
    private ValidateConfig validate;
    private ActionConfig action;
}

我的大摇大摆看起来像 -

这基本上是POJO的结构。

应该是什么样子 -

基本上,我希望了解如何将其设置为默认 JSON 结构。

【问题讨论】:

  • 你能添加JobConfig的代码吗?谢谢!
  • 添加了相同的代码。

标签: java swagger jsonschema2pojo


【解决方案1】:

如果您不想在 JSON 中包含 profilevalidateaction,您可以简单地使用 @JsonIgnore,如下所示:

@Data
public class JobConfig {
    @NonNull private String name;
    @NonNull private BatchSpec batch;

    @JsonIgnore
    private ProfileConfig profile;

    @JsonIgnore
    private ValidateConfig validate;

    @JsonIgnore
    private ActionConfig action;
}

如果您只是不想在 Swagger 文档中列出它们,可以使用@ApiModelProperty,如下所示:

@Data
public class JobConfig {
    @NonNull private String name;
    @NonNull private BatchSpec batch;

    @ApiModelProperty(hidden = true)
    private ProfileConfig profile;

    @ApiModelProperty(hidden = true)
    private ValidateConfig validate;

    @ApiModelProperty(hidden = true)
    private ActionConfig action;
}

鉴于您不想隐藏属性而是显示更真实的示例,请尝试以下操作:

@Data
public class JobConfig {
    @NonNull 
    @ApiModelProperty(example = "hotel")
    private String name;

    @NonNull 
    private BatchSpec batch;

    private ProfileConfig profile;

    private ValidateConfig validate;

    private ActionConfig action;
}
@Data
public class BatchSpec {
    @ApiModelProperty(example = "FullScan")
    private String type;
}

【讨论】:

  • 我不想完全隐藏它,现在它显示的是默认结构。我想创建一个对象并大摇大摆地展示它。
  • 对不起,我没有关注你。那你想什么时候不显示?
  • 现在,如果您在图像中看到,它显示“字符串”。我想在那里放一个合理的值,所以创建一个我选择的 jobConfig 对象,然后大摇大摆地展示它。
  • 现在我明白你的意思了。 @ApiModelProperty(example = ) 应该这样做,但我想说你需要在 JobConfig 以及 BatchSpecProfileConfigValidateConfigActionConfig 属性中注释每个属性。
  • 感谢您的回复,如果您看到我有@ApiModelProperty(example = "{\"name\": \"hotel\", \"batch\": {\"type\": \"FullScan\"}}") 但它不反映任何内容。这也只接受字符串,我不知道如何在这里给它一个变量。
猜你喜欢
  • 2018-11-20
  • 1970-01-01
  • 1970-01-01
  • 2018-08-08
  • 1970-01-01
  • 1970-01-01
  • 2022-06-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多