返回

ApiModel 与 ApiModelProperty 注解详解

后端


Swagger 是一款开源的 REST API 文档生成工具,可以生成各种不同语言的 API 文档,比如 Java、PHP、Python 等。ApiModel 注解和 ApiModelProperty 注解是 Swagger 中常用的两个注解,它们可以帮助我们为 API 接口生成更详细的文档。

ApiModel 注解

ApiModel 注解用于一个类是 Swagger 的模型类。该注解可以指定类的信息、版本等信息。以下是 ApiModel 注解的常用属性:

  • description:类的描述信息。
  • value:类的名称。
  • subTypes:类的子类型。
  • discriminated:指定类的子类型字段。
  • reference:指定类的引用类型。

ApiModelProperty 注解

ApiModelProperty 注解用于描述类中的一个属性。该注解可以指定属性的名称、类型、描述、是否必填等信息。以下是 ApiModelProperty 注解的常用属性:

  • name:属性的名称。
  • value:属性的描述信息。
  • dataType:属性的类型。
  • required:指定属性是否必填。
  • allowableValues:指定属性允许的值。
  • example:指定属性的示例值。
  • access:指定属性的访问级别。
  • position:指定属性在文档中的位置。
  • hidden:指定属性是否隐藏。
  • readOnly:指定属性是否只读。
  • writeOnly:指定属性是否只写。
  • defaultValue:指定属性的默认值。
  • containerType:指定属性的容器类型。
  • type:指定属性的类型。
  • format:指定属性的格式。
  • example:指定属性的示例值。

使用示例

@ApiModel(description = "用户模型")
public class User {

    @ApiModelProperty(value = "用户ID", required = true, example = "1")
    private Long id;

    @ApiModelProperty(value = "用户名", required = true, example = "zhangsan")
    private String username;

    @ApiModelProperty(value = "密码", required = true, example = "123456")
    private String password;

    @ApiModelProperty(value = "年龄", example = "18")
    private Integer age;

    @ApiModelProperty(value = "性别", allowableValues = {"男", "女"})
    private String gender;
}

其他 Swagger 注解

除了 ApiModel 注解和 ApiModelProperty 注解之外,Swagger 还提供了其他一些注解,比如:

  • ApiParam:用于描述请求参数。
  • ApiIgnore:用于忽略一个类或属性。
  • ApiModelPropertyOptional:用于指定一个属性是可选的。
  • ApiResponse:用于描述一个响应。
  • ApiResponses:用于描述一组响应。
  • ApiResponseCode:用于指定一个响应的代码。
  • ApiRequest:用于描述一个请求。
  • ApiProperty:用于描述一个属性。
  • ApiImplicitParam:用于描述一个隐式参数。
  • ApiImplicitParams:用于描述一组隐式参数。
  • RequestBody:用于描述请求体。
  • ApiParamImplicit:用于指定一个参数是隐式的。
  • ApiModelDescription:用于指定一个类的描述信息。
  • ApiIgnoreProperty:用于忽略一个属性。
  • ApiImplicitBody:用于描述请求体的隐式参数。

这些注解都可以帮助我们为 API 接口生成更详细的文档。

总结

ApiModel 注解和 ApiModelProperty 注解是 Swagger 中常用的两个注解,它们可以帮助我们为 API 接口生成更详细的文档。通过使用这两个注解,我们可以指定类的描述信息、属性的名称、类型、描述、是否必填等信息,从而帮助开发人员更好地理解 API 接口。