如何为 ApiModelProperty 在 swagger 上设置 POJO 数据
Posted
技术标签:
【中文标题】如何为 ApiModelProperty 在 swagger 上设置 POJO 数据【英文标题】:How to set POJO Data on swagger for ApiModelProperty 【发布时间】: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
的代码吗?谢谢!
添加了相同的代码。
【参考方案1】:
如果您不想在 JSON 中包含 profile
、validate
和 action
,您可以简单地使用 @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
以及 BatchSpec
、ProfileConfig
、ValidateConfig
和 ActionConfig
属性中注释每个属性。
感谢您的回复,如果您看到我有@ApiModelProperty(example = "\"name\": \"hotel\", \"batch\": \"type\": \"FullScan\"") 但它不反映任何内容。这也只接受字符串,我不知道如何在这里给它一个变量。以上是关于如何为 ApiModelProperty 在 swagger 上设置 POJO 数据的主要内容,如果未能解决你的问题,请参考以下文章
Swagger @ApiModelProperty示例值为null为Long
springboot @ApiModelProperty()注解
entity类中用@ApiModelProperty注解啥意思