swagger 注解

本文深入讲解了API注解的使用,包括@ApiModelProperty、@Api、@ApiOperation等在控制器类及方法上的应用,以及如何配置@RequestMapping注解实现不同HTTP请求的处理。

API详细说明
注释汇总

作用范围    API    使用位置
对象属性    @ApiModelProperty    用在出入参数对象的字段上
协议集描述    @Api    用于controller类上
协议描述    @ApiOperation    用在controller的方法上
Response集    @ApiResponses    用在controller的方法上
Response    @ApiResponse    用在 @ApiResponses里边
非对象参数集    @ApiImplicitParams    用在controller的方法上
非对象参数描述    @ApiImplicitParam    用在@ApiImplicitParams的方法里边
描述返回对象的意义    @ApiModel    用在返回对象类上


@RequestMapping此注解的推荐配置 
value 
method 
produces

    @ApiOperation("信息软删除")
    @ApiResponses({ @ApiResponse(code = CommonStatus.OK, message = "操作成功"),
            @ApiResponse(code = CommonStatus.EXCEPTION, message = "服务器内部异常"),
            @ApiResponse(code = CommonStatus.FORBIDDEN, message = "权限不足") })
    @ApiImplicitParams({ @ApiImplicitParam(paramType = "query", dataType = "Long", name = "id", value = "信息id", required = true) })
    @RequestMapping(value = "/remove.json", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
    public RestfulProtocol remove(Long id) {
    @ApiModelProperty(value = "标题")
    private String  title;

@ApiImplicitParam
属性    取值    作用
paramType        查询参数类型
path    以地址的形式提交数据
query    直接跟参数完成自动映射赋值
body    以流的形式提交 仅支持POST
header    参数在request headers 里边提交
form    以form表单的形式提交 仅支持POST
dataType        参数的数据类型 只作为标志说明,并没有实际验证
Long    
String    
name        接收参数名
value        接收参数的意义描述
required        参数是否必填
true    必填
false    非必填
defaultValue        默认值

paramType 示例详解
path
 @RequestMapping(value = "/findById1/{id}", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)

 @PathVariable(name = "id") Long id
body
  @ApiImplicitParams({ @ApiImplicitParam(paramType = "body", dataType = "MessageParam", name = "param", value = "信息参数", required = true) })
  @RequestMapping(value = "/findById3", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_UTF8_VALUE, consumes = MediaType.APPLICATION_JSON_VALUE)

  @RequestBody MessageParam param

  提交的参数是这个对象的一个json,然后会自动解析到对应的字段上去,也可以通过流的形式接收当前的请求数据,但是这个和上面的接收方式仅能使用一个(用@RequestBody之后流就会关闭了)
header
  @ApiImplicitParams({ @ApiImplicitParam(paramType = "header", dataType = "Long", name = "id", value = "信息id", required = true) }) 

   String idstr = request.getHeader("id");
        if (StringUtils.isNumeric(idstr)) {
            id = Long.parseLong(idstr);
        }
Form
@ApiImplicitParams({ @ApiImplicitParam(paramType = "form", dataType = "Long", name = "id", value = "信息id", required = true) })
 @RequestMapping(value = "/findById5", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_UTF8_VALUE, consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE)

 


原文:https://blog.youkuaiyun.com/xupeng874395012/article/details/68946676 

### Swagger注解的使用方法与示例 Swagger注解是用于描述API接口和参数的重要工具,它能够帮助开发者自动生成API文档[^1]。以下是关于如何使用Swagger注解以及一些常见的示例代码。 #### 1. 引入依赖 在使用Swagger注解之前,需要确保项目中已经引入了相关的依赖。例如,在Maven项目中可以添加以下依赖: ```xml <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-boot-starter</artifactId> <version>3.0.0</version> </dependency> ``` #### 2. 配置Swagger 在Spring Boot项目中,可以通过配置类启用Swagger功能。以下是一个简单的配置示例: ```java @Configuration @EnableSwagger2 public class SwaggerConfig { @Bean public Docket api() { return new Docket(DocumentationType.SWAGGER_2) .select() .apis(RequestHandlerSelectors.basePackage("com.example.controller")) .paths(PathSelectors.any()) .build(); } } ``` #### 3. 使用常见注解 Swagger提供了多种注解来描述API接口及其参数。以下是一些常用的注解及其功能: - **@Api**:用于类上,描述该控制器的功能或模块名称。 ```java @Api(tags = "用户管理模块") ``` - **@ApiOperation**:用于方法上,描述接口的具体操作及说明。 ```java @ApiOperation(value = "获取用户信息", notes = "根据用户ID查询用户详细信息") ``` - **@ApiParam**:用于方法参数上,描述参数的作用及约束条件。 ```java @GetMapping("/user/{id}") public ResponseEntity<User> getUserById(@ApiParam(value = "用户ID", required = true) @PathVariable Long id) { // 方法实现 } ``` - **@ApiResponse**:用于描述接口可能返回的响应结果。 ```java @ApiResponse(code = 404, message = "未找到指定资源") ``` - **@ApiModel** 和 **@ApiModelProperty**:用于描述复杂的对象模型。 ```java @ApiModel(description = "用户实体类") public class User { @ApiModelProperty(value = "用户ID", example = "1") private Long id; @ApiModelProperty(value = "用户名", example = "张三") private String name; } ``` #### 4. 示例代码 以下是一个完整的示例代码,展示了如何使用Swagger注解描述一个简单的API接口: ```java @RestController @RequestMapping("/api/user") @Api(tags = "用户管理模块", description = "提供用户相关操作的API接口") public class UserController { @ApiOperation(value = "创建用户", notes = "根据用户信息创建新用户") @PostMapping("/create") public ResponseEntity<String> createUser(@RequestBody @ApiParam(value = "用户信息") User user) { // 创建用户的逻辑 return ResponseEntity.ok("用户创建成功"); } @ApiOperation(value = "获取用户信息", notes = "根据用户ID查询用户详细信息") @ApiResponses({ @ApiResponse(code = 200, message = "成功返回用户信息"), @ApiResponse(code = 404, message = "未找到指定用户") }) @GetMapping("/get/{id}") public ResponseEntity<User> getUserById(@ApiParam(value = "用户ID", required = true) @PathVariable Long id) { // 查询用户的逻辑 return ResponseEntity.ok(new User()); } } ``` #### 5. 注意事项 在使用Swagger注解时需要注意以下几点: - 确保注解的描述清晰、简洁且符合实际需求[^2]。 - 避免超出Swagger-UI页面可展示的字符限制(通常为120个字符以内)[^3]。 - 对于复杂的数据结构,建议使用`@ApiModel`和`@ApiModelProperty`进行详细描述。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值