Java 昂首阔步
我想知道如何在swagger中记录枚举 据 数据类型。有关支持的数据类型,请参阅文档。如果数据类型是自定义对象,请设置其名称或不设置任何内容。如果是枚举,请为枚举常量使用“字符串”和AllowableValue 但我并没有找到一些好的Java示例如何真正使用它,规范是 JAVA 第一次服务 二次服务 输入 白天 输出 pom.xmlJava 昂首阔步,java,swagger,swagger-maven-plugin,Java,Swagger,Swagger Maven Plugin,我想知道如何在swagger中记录枚举 据 数据类型。有关支持的数据类型,请参阅文档。如果数据类型是自定义对象,请设置其名称或不设置任何内容。如果是枚举,请为枚举常量使用“字符串”和AllowableValue 但我并没有找到一些好的Java示例如何真正使用它,规范是 JAVA 第一次服务 二次服务 输入 白天 输出 pom.xml 4.0.0 贝特里斯塔 在HTML输出中我看到了很多问题(缺少输出描述、错误的URL、说明用于注释),但我不知道如何克服的一个问题是枚举的使用 在测试中,swa
4.0.0
贝特里斯塔
在HTML输出中我看到了很多问题(缺少输出描述、错误的URL、说明用于注释),但我不知道如何克服的一个问题是枚举的使用
在测试中,swagger\target\generated\apidocs\first.json
应该是(我认为)
但是有
"models" : {
"Input" : {
"id" : "Input",
"description" : "",
"properties" : {
"day" : {
"$ref" : "Day",
"enum" : [ "M", " T" ]
}
}
}
}
我认为,$ref
是个问题
有什么想法吗?根据你指的文件:
数据类型。有关支持的数据类型,请参阅文档。如果数据类型是自定义对象,请设置其名称或不设置任何内容如果是枚举,请为枚举常量使用“字符串”和AllowableValue。
我认为您应该手动添加枚举值:
@ApiModel
public class Input {
@ApiModelProperty(dataType = "string", allowableValues = "Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday", value = "description", notes = "notes")
public Day day;
}
对于swagger maven plugin 3.1.0,这可能是一个最低限度的文档:
@ApiModel
public class Input {
@ApiModelProperty
public Day day;
}
@ApiModel
public enum Day {
Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday;
}
这就是生成的json模型:
"definitions" : {
"Input" : {
"type" : "object",
"properties" : {
"day" : {
"type" : "string",
"enum" : [ "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday" ]
}
}
}
}
这就是模型在招摇过市中的表现方式:
Input {
day (string, optional) = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']
}
谢谢你的帮助
我在代码中已经习惯了这种类型
private String date;
@ApiModelProperty(dataType = "string", allowableValues = "FirstValue, SecondValue", value = "description", notes = "notes")
private CarrierType carrierName;
public enum CarrierType {
FirstValue,
SecondValue
}
它对我来说工作正常。您可以将responseContainer与@ApiOperation注释一起使用:
@ApiOperation(value = "Brief description of your operation.", response = YourEnum.class, responseContainer = "List")
自定义Springfox插件解决方案:
swagger.io建议:“如果需要指定枚举项的说明,可以在参数或属性的说明中执行此操作”
我基于专有的@ApiEnum注释实现了这一建议。该库在此处可用:在OpenApi版本Swagger 2.x中,您需要使用此处描述的新注释:
结果是这样的:
很抱歉错过了一节课,我增加了Day
class。是的,它是类,但如何在文档中获得可用值?我想在文档中的某个地方看到,周一、周二、周三、周四、周五、周六、周日将出现一个值。请参阅此处的第二篇文章:这是一个维护噩梦,因为您将枚举值作为字符串进行移植。任何对枚举的修改,开发人员都必须记住更改注释中的字符串。我正在使用camel-swagger插件,并发现使用@ApiModelProperty(dataType=“string”)注释枚举属性,从而允许swagger json模型正确填充枚举类型。
@ApiModel
public class Input {
@ApiModelProperty(dataType = "string", allowableValues = "Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday", value = "description", notes = "notes")
public Day day;
}
@ApiModel
public class Input {
@ApiModelProperty
public Day day;
}
@ApiModel
public enum Day {
Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday;
}
"definitions" : {
"Input" : {
"type" : "object",
"properties" : {
"day" : {
"type" : "string",
"enum" : [ "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday" ]
}
}
}
}
Input {
day (string, optional) = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']
}
private String date;
@ApiModelProperty(dataType = "string", allowableValues = "FirstValue, SecondValue", value = "description", notes = "notes")
private CarrierType carrierName;
public enum CarrierType {
FirstValue,
SecondValue
}
@ApiOperation(value = "Brief description of your operation.", response = YourEnum.class, responseContainer = "List")
@Schema(description = "Shuttle shipment action")
public class ShuttleShipmentAction {
@Schema(required = true, description = "Id of a shuttle shipments")
private long id;
@Schema(required = true, description = "Action to be performed on shuttle shipments", allowableValues = { "SEND",
"AUTHORIZE", "REJECT", "FIX_TRAINRUN", "UNFIX_TRAINRUN", "DELETE" })
private String action;
...
...