SpringBoot之springfox(Swagger) (ApiDoc接口文档)

本文介绍如何使用Springfox为Spring MVC应用自动生成RESTful API文档,并通过Swagger UI展示。文章详细介绍了Springfox的安装配置过程及RESTful注解的使用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Springfox的前身是swagger-springmvc,是一个开源的API doc框架,可以将我们的Controller的方法以文档的形式展现,基于Swagger。

官网地址:http://springfox.github.io/springfox/

1.maven依赖

<!--springfox-->
<dependency>    <groupId>io.springfox</groupId>    <artifactId>springfox-swagger2</artifactId>    <version>2.4.0</version> </dependency> <dependency>    <groupId>io.springfox</groupId>    <artifactId>springfox-swagger-ui</artifactId>    <version>2.4.0</version> </dependency>

 

2.配置

package com.example;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.web.context.request.async.DeferredResult; import springfox.documentation.builders.PathSelectors; import springfox.documentation.service.ApiInfo; import springfox.documentation.service.Contact; import springfox.documentation.spi.DocumentationType; import springfox.documentation.spring.web.plugins.Docket; import springfox.documentation.swagger2.annotations.EnableSwagger2; @Configuration @EnableSwagger2 @SpringBootApplication public class DemoApplication {     public static void main(String[] args) {         SpringApplication.run(DemoApplication.class, args);     }     @Bean     public Docket testApi() {         return new Docket(DocumentationType.SWAGGER_2)                 .groupName("test")                 .genericModelSubstitutes(DeferredResult.class)                 //.genericModelSubstitutes(ResponseEntity.class)                 .useDefaultResponseMessages(false)                 .forCodeGeneration(true)                 .pathMapping("/test")//api测试请求地址                 .select()                 .paths(PathSelectors.regex("/common/.*"))//过滤的接口                 .build()                 .apiInfo(testApiInfo());     }     @Bean     public Docket demoApi() {         return new Docket(DocumentationType.SWAGGER_2)                 .groupName("demo")                 .genericModelSubstitutes(DeferredResult.class)                 //  .genericModelSubstitutes(ResponseEntity.class)                 .useDefaultResponseMessages(false)                 .forCodeGeneration(false)                 .pathMapping("/")                 .select()                 .paths(PathSelectors.regex("/comm.*"))//过滤的接口                 .build()                 .apiInfo(demoApiInfo());     }     private ApiInfo testApiInfo() {         Contact contact = new Contact("王念", "http://my.oschina.net/wangnian", "2251181679@qq.com");         ApiInfo apiInfo = new ApiInfo("某API接口",//大标题                 "REST风格API",//小标题                 "0.1",//版本                 "www.baidu.com",                 contact,//作者                 "主页",//链接显示文字                 ""//网站链接         );         return apiInfo;     }     private ApiInfo demoApiInfo() {         Contact contact = new Contact("王念", "http://my.oschina.net/wangnian", "2251181679@qq.com");         ApiInfo apiInfo = new ApiInfo("某API接口",//大标题                 "REST风格API",//小标题                 "0.1",//版本                 "www.baidu.com",                 contact,//作者                 "主页",//链接显示文字                 ""//网站链接         );         return apiInfo;     } }

 

3.restful注解描述

package com.example.demo;

import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.*; import springfox.documentation.annotations.ApiIgnore; /**  * Created by 王念 on 2016/4/25.  */ @RestController @RequestMapping("comm/") public class Controller {     /**      * 简单接口描述      *      * @param userName      * @return      */     @RequestMapping(value = "/demo1", method = RequestMethod.POST)     @ApiOperation(value = "测试接口1", notes = "简单接口描述 userName必填", code = 200, produces = "application/json")     public ModelMap getDemo(@RequestParam("userName") String userName) {         ModelMap map = new ModelMap();         map.addAttribute("userName", userName);         return map;     }     /**      * 参数描述      *      * @param userName      * @return      */     @RequestMapping(value = "/demo2/{userName}", method = RequestMethod.POST)     @ApiOperation(value = "测试接口2", notes = "参数描述", code = 200, produces = "application/json")     public ModelMap getDemo2(@ApiParam(name = "userName", value = "编号", required = true) @PathVariable("userName") String userName) {         ModelMap map = new ModelMap();         map.addAttribute("userName", userName);         return map;     }     /**      * 接受对象      *      * @return      */     @RequestMapping(value = "/demo3", method = RequestMethod.POST)     @ApiOperation(value = "测试接口3", notes = "接受对象", code = 200, produces = "application/json")     public ModelMap getDemoa(@RequestBody User user) {         ModelMap map = new ModelMap();         map.addAttribute("result", user);         return map;     }     @ApiIgnore //使用这个注解忽略这个接口     @RequestMapping(value = "/demo4", method = RequestMethod.POST)     public ModelMap getDemob(@RequestParam String content) {         ModelMap map = new ModelMap();         map.addAttribute("result", new java.util.Date());         return map;     } }

访问http://localhost:8080/swagger-ui.html 就能看到

notes里 换行用  </br> HMLT的标签就行了,哈哈哈哈

http://my.oschina.net/wangnian/blog/666017

### Spring Boot 中编写接口文档的最佳实践 在开发基于 Spring Boot 的应用时,编写清晰、易维护的接口文档是一项重要任务。以下是关于如何利用 SwaggerApidoc 工具来实现这一目标的具体方法。 #### 使用 Swagger 生成接口文档 Swagger 是一种广泛使用的工具,用于设计、构建和记录 RESTful API 接口。通过集成 Swagger 到 Spring Boot 应用程序中,可以自动生成交互式的 API 文档。 1. **引入依赖** 需要在项目的 `pom.xml` 文件中添加以下 Maven 依赖项[^2]: ```xml <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-boot-starter</artifactId> <version>3.0.0</version> </dependency> ``` 2. **配置 Swagger** 创建一个 Java 类并使用注解启用 Swagger 功能: ```java import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import springfox.documentation.builders.PathSelectors; import springfox.documentation.builders.RequestHandlerSelectors; import springfox.documentation.spi.DocumentationType; import springfox.documentation.spring.web.plugins.Docket; @Configuration public class SwaggerConfig { @Bean public Docket api() { return new Docket(DocumentationType.SWAGGER_2) .select() .apis(RequestHandlerSelectors.basePackage("com.example.demo.controller")) .paths(PathSelectors.any()) .build(); } } ``` 3. **访问生成的文档** 启动应用程序后,在浏览器中打开 URL `/swagger-ui/index.html` 即可查看自动化的 API 文档界面[^3]。 #### 使用 Apidoc 手动定义接口描述 Apidoc 提供了一种轻量级的方式,允许开发者通过代码中的特殊注释来自动生成静态 HTML 格式的 API 文档。 1. **安装 Apidoc CLI 工具** 安装 Node.js 并运行命令以全局安装 Apidoc: ```bash npm install -g apidoc ``` 2. **为控制器类添加注释** 在每个 HTTP 方法上加入特定格式的注释以便于解析器识别: ```java /** * @api {get} /users 获取用户列表 * @apiName GetUsersList * @apiGroup Users * * @apiSuccess (Response Fields) {String[]} usernames 用户名数组. */ @GetMapping("/users") public List<String> getUsers() { return Arrays.asList("Alice", "Bob"); } ``` 3. **执行文档生成过程** 运行下面的指令将会扫描源码目录下的所有文件,并依据上述模板创建对应的 HTML 页面: ```bash apidoc -i src/ -o doc/ ``` 以上两种方式各有优劣——如果追求自动化程度高且团队成员熟悉 OpenAPI 规范,则推荐采用 Swagger;反之则可以选择更灵活简单的 Apidoc 方案[^4]。 ### 总结 无论是选用 Swagger 或者 Apidoc 来完成 Spring Boot 微服务项目里的接口说明工作,都应遵循一定的最佳实践经验从而提升协作效率以及降低后期维护成本。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值