在springboot后端项目中,自己在生成接口文档时花了不少时间,在此总结一下,帮助其他小伙伴~
-
-
-
io.springfox -
springfox-boot-starter -
3.0.0 -
-
-
org.springframework.boot -
spring-boot-starter-parent -
2.6.1 -
spring.mvc.pathmatch.matching-strategy=ANT_PATH_MATCHER
- package com.example.demo.config;
-
- 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.oas.annotations.EnableOpenApi;
- import springfox.documentation.service.ApiInfo;
- import springfox.documentation.service.Contact;
- import springfox.documentation.spi.DocumentationType;
- import springfox.documentation.spring.web.plugins.Docket;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import javax.servlet.http.HttpSession;
- import java.util.ArrayList;
-
- @Configuration
- @EnableOpenApi
- public class SwaggerConfig {
-
- //apiInfo类,介绍作者信息,随便写就行
- private ApiInfo apiInfo(){
- Contact contact = new Contact("lcf","https://www.baidu.com/","123@qq.com");
- return new ApiInfo(
- "接口文档示例",
- "再小的帆也能远航",
- "v1.0",
- "https://scs.buaa.edu.cn/",
- contact,
- "Apache 2.0",
- "http://www.apache.org/licenses/LICENSE-2.0",
- new ArrayList());
- }
-
- @Bean
- public Docket account() {
- String regex="(?i).*/account/.*";
- return new Docket(DocumentationType.SWAGGER_2)
- .apiInfo(apiInfo())
- //生成接口文档时,忽略以下三种参数类型,一般调试接口用不到
- .ignoredParameterTypes(HttpSession.class, HttpServletRequest.class, HttpServletResponse.class)
- .select()
- .apis(RequestHandlerSelectors.any())
- .paths(PathSelectors.regex(regex))//只扫描文件路径含有account的文件
- .build()
- .groupName("account");
- }
-
- }
-
- package com.example.demo.controller;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.RequestMethod;
- import org.springframework.web.bind.annotation.RestController;
-
- @RestController
- public class AccountController {
- @RequestMapping(value = "/account/hello", method = RequestMethod.POST)
- public String Hello(String name){
- return "hello"+name;
- }
- }
启动项目,没有报错
打开swagger-ui界面,这里我的地址是
http://localhost:8080/swagger-ui/index.html
成功!开始导出接口文档
进入个人项目后,点击更多功能-->导入

返回刚才的swagger-ui界面,右键-->检查-->network-->刷新页面
找到以api-docs开头的这个url,复制:右键-->copy-->copy link address
这里我的url是:
http://localhost:8080/v2/api-docs?group=account

url就复制好啦,然后打开apifox,导入数据类型选择OpenAPI/Swagger

下方选择以url方式导入,粘贴刚才复制的url

点击确定导入,成功。
ps:默认条件下,swagger会将接口的参数识别为请求体(body)里的参数,而我们想要的是查询参数(param)

所以,需要在每个接口里自定义参数的类型,加上@RequestParam注解就行

反之,如果想要swagger识别成请求体(body)里的参数,在该参数前加上注解 @RequestBody
右上角这里,设置环境,默认服务,前置url设为本地环境:localhost:8080,就可以进行本地调试了

返回个人项目,点击在线分享,就能分享给前端小伙伴了
