马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
目次
一、SpringDoc
1.添加依靠
2.设置代码
设置表明
(1)springdoc.api-docs.path
(2)springdoc.swagger-ui.path
(3)springdoc.swagger-ui.operationsSorter
(4)springdoc.swagger-ui.tagsSorter
(5)springdoc.title
利用
3.控制器处置惩罚
4.访问
5.长处
6.缺点
二、swagger
1. 添加依靠项
2. 设置 Swagger
3. 将解释添加到控制器中
4. 访问 Swagger UI
5.长处
6.缺点
Swagger和Springdoc是两个常用的工具,用于天生和维护API文档,特别是针对基于REST的Web服务。它们有用地提升了API的可读性和可维护性,资助开发者、产物司理和其他长处相干者更好地明白和利用所提供的API。
注意:Swagger支持springboot2.0但不支持springboot3.0
一、SpringDoc
Springdoc是一个开源的库,旨在将Spring Boot项目标RESTful API与OpenAPI 3文档天生器集成。Springdoc与Spring Boot应用无缝集成,并支持包罗Swagger UI在内的多种用户界面。
1.添加依靠
- <dependencies>
- <dependency>
- <groupId>org.springdoc</groupId>
- <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
- <version>2.6.0</version>
- </dependency>
- </dependencies>
复制代码 2.设置代码
添加一个设置类,并添加xml设置
设置表明
- springdoc:
- api-docs:
- path: /v3/api-docs
- swagger-ui:
- path: /swagger-ui.html
- operationsSorter: method
- tagsSorter: alpha
复制代码 (1)springdoc.api-docs.path
- 属性路径:springdoc.api-docs.path
- 作用: 界说 OpenAPI 文档的访问路径。
- 默认值:/v3/api-docs
- 示例:
- springdoc:
- api-docs:
- path: /v3/api-docs
复制代码 设置后,API 文档可以通过http://<host>:<port>/v3/api-docs访问。
(2)springdoc.swagger-ui.path
- 属性路径:springdoc.swagger-ui.path
- 作用: 界说 Swagger UI 的访问路径。
- 默认值:/swagger-ui.html
- 示例:
- springdoc:
- swagger-ui:
- path: /swagger-ui.html
复制代码 设置后,Swagger UI 可以通过http://<host>:<port>/swagger-ui.html访问。
(3)springdoc.swagger-ui.operationsSorter
- 属性路径:springdoc.swagger-ui.operationsSorter
- 作用: 界说怎样对 Swagger UI 中的操纵举行排序。
- 可选值:
- alpha: 按照操纵名称的字母次序分列。
- method: 按照 HTTP 方法举行排序(如 GET, POST, PUT, DELETE)。
- 示例:
- springdoc:
- swagger-ui:
- operationsSorter: method
复制代码 设置后,操纵会按照 HTTP 方法的次序体现。
(4)springdoc.swagger-ui.tagsSorter
- 属性路径:springdoc.swagger-ui.tagsSorter
- 作用: 界说怎样对 Swagger UI 中的标签举行排序。
- 可选值:
- 示例:
- springdoc:
- swagger-ui:
- tagsSorter: alpha
复制代码 设置后,标签会按照字母次序体现。
(5)springdoc.title
- 属性路径:springdoc.title
- 作用: 设置整个 API 文档的标题。
- 示例:
设置后,天生的 API 文档的标题会体现为“用户管理”。
利用
- package com.ck.framework.common.springdoc.config;
- import io.swagger.v3.oas.models.OpenAPI;
- import io.swagger.v3.oas.models.info.Contact;
- import io.swagger.v3.oas.models.info.Info;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.context.annotation.Bean;
- import org.springframework.context.annotation.Configuration;
- /**
- * @ClassName SpringDocConfig
- * @Description
- * @Author
- * @Date 2024/8/28 15:55
- * @Version 1.0
- */
- @Configuration
- public class SpringDocConfig {
- @Autowired
- private BaseConfig baseConfig;
- @Bean
- public OpenAPI createOpenApi() {
- return new OpenAPI()
- .info(createInfo());
- }
- private Info createInfo() {
- return new Info()
- .contact(createContact())
- .title(baseConfig.getTitle())
- .description(baseConfig.getDescription())
- .version(baseConfig.getVersion());
- }
- private Contact createContact() {
- Contact contact = new Contact();
- contact.name(baseConfig.getContactName());
- contact.url(baseConfig.getContactUrl());
- contact.email(baseConfig.getContactEmail());
- return contact;
- }
- }
复制代码 3.控制器处置惩罚
须要再Controller内里加上Tag注解
- package com.ck.framework.user.controller;
- import com.ck.framework.common.web.bean.Result;
- import com.ck.framework.user.entity.PageResult;
- import com.ck.framework.user.entity.dto.UserDto;
- import com.ck.framework.user.entity.po.UserPo;
- import com.ck.framework.user.entity.req.UserListReq;
- import com.ck.framework.user.entity.req.UserReq;
- import com.ck.framework.user.service.UserService;
- import io.swagger.v3.oas.annotations.tags.Tag;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.web.bind.annotation.*;
- /**
- * @ClassName UserController
- * @Description
- * @Author
- * @Date 2024/8/24 0:03
- * @Version 1.0
- */
- @RestController
- @RequestMapping("/user")
- @Tag(name = "用户管理")
- public class UserController {
- @Autowired
- private UserService userService;
- @PostMapping
- public Result<Boolean> addUser(@RequestBody UserReq userReq) {
- UserDto userDto = new UserDto();
- userDto.setName(userReq.getName());
- userDto.setAge(userReq.getAge());
- int num = userService.addUser(userDto);
- if (num > 0) {
- return Result.success(true);
- } else {
- return Result.fail();
- }
- }
- @DeleteMapping("/{id}")
- public Result<Boolean> deleteUser(@RequestBody UserReq userReq) {
- UserDto userDto = new UserDto();
- userDto.setId(userReq.getId());
- int num = userService.delUser(userDto);
- if (num > 0) {
- return Result.success(true);
- } else {
- return Result.fail();
- }
- }
- @GetMapping
- public Result<PageResult<UserPo>> getUserPage(@RequestBody UserListReq userListReq) {
- UserDto userDto = new UserDto();
- userDto.setPageIndex(userListReq.getPageIndex());
- userDto.setPageSize(userListReq.getPageSize());
- PageResult<UserPo> pageResult = userService.getUserPage(userDto);
- return Result.success(pageResult);
- }
- }
复制代码 4.访问
5.长处
- 无缝集成:
- 专为 Spring Boot 筹划,非常容易集成到 Spring Boot 应用中。
- 镌汰注解:
- 可以主动剖析 Spring MVC 或 Spring WebFlux 控制器,镌汰了须要添加的注解数目。
- 主动化设置:
- 支持最新技能:
- 支持 Spring Boot 2.x 及更高版本,跟进 Spring 生态体系的最新发展。
- 丰富的文档和示例:
6.缺点
- 范围性:
- 专门面向 Spring Boot 项目,不实用于其他框架或原生 Spring 项目。
- 功能相对简朴:
- 相对于 Swagger 提供的完备工具链,Springdoc 的功能相对单一,紧张聚焦于文档天生。
二、swagger
Swagger是一个用于天生、形貌、调用和可视化 RESTful Web 服务的开源框架。它的核心是一个名为 OpenAPI 规范的形貌性语言。Swagger 是 Java 应用步调中常用的工具之一,由于它能主动天生 API 文档,并提供一个用户友爱的接口来测试 API。
在 Java 项目中利用 Swagger 通常包罗以下步调:
1. 添加依靠项
起首,你须要在你的项目中添加所需的 Swagger 依靠项。以 Maven 项目为例,在pom.xml文件中添加以下依靠:
- <dependencies>
- <dependency>
- <groupId>io.springfox</groupId>
- <artifactId>springfox-swagger-ui</artifactId>
- <version>3.0.0</version>
- </dependency>
- <dependency>
- <groupId>io.springfox</groupId>
- <artifactId>springfox-swagger2</artifactId>
- <version>3.0.0</version>
- </dependency>
- </dependencies>
复制代码 2. 设置 Swagger
添加一个 Swagger 设置类。比方,在 Spring Boot 应用步调中,你可以添加以下内容:
- package com.ck.framework.common.swagger.config;
- import org.springframework.context.annotation.Configuration;
- import springfox.documentation.builders.ApiInfoBuilder;
- import springfox.documentation.builders.PathSelectors;
- import springfox.documentation.builders.RequestHandlerSelectors;
- 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;
- /**
- * @ClassName SwaggerConfig
- * @Description 配置Swagger的类,启用Swagger并定义API文档的相关信息
- * @Author
- * @Date 2024/8/28 08:31
- * @Version 1.0
- */
- @Configuration // 表示这是一个配置类
- @EnableSwagger2 // 启用Swagger2
- public class SwaggerConfig {
- /**
- * 创建一个Docket Bean,用于配置Swagger的核心内容,包括哪些包中的API需要生成文档和API的基本信息。
- *
- * @return Docket对象,用于Swagger的配置
- */
- public Docket createRestApi() {
- return new Docket(DocumentationType.SWAGGER_2) // 指定文档类型为Swagger2
- .apiInfo(apiInfo()) // 配置API信息
- .select() // 返回一个ApiSelectorBuilder实例,用于控制哪些接口暴露给swagger
- .apis(RequestHandlerSelectors.basePackage("com.ck.framework.common.swagger")) // 选择扫描的包名
- .paths(PathSelectors.ant("/*")) // 选择哪些路径的API需要生成文档
- .build(); // 构建Docket实例
- }
- /**
- * 构建API基本信息,用于页面展示的文档信息。
- *
- * @return ApiInfo对象,包含相关API的描述信息
- */
- public ApiInfo apiInfo() {
- return new ApiInfoBuilder()
- .title("") // 设置文档标题
- .description(" 测试swagger") // 设置文档描述信息
- .contact(new Contact("", "git地址", "[email protected]")) // 设置联系人信息
- .version("1.0") // 设置文档版本
- .build(); // 构建ApiInfo实例
- }
- }
复制代码 3. 将解释添加到控制器中
利用 Swagger 解释形貌注册到Controller。比方:
- package com.ck.framework.user.controller;
- import com.ck.framework.common.web.bean.Result;
- import com.ck.framework.user.entity.PageResult;
- import com.ck.framework.user.entity.dto.UserDto;
- import com.ck.framework.user.entity.po.UserPo;
- import com.ck.framework.user.entity.req.UserListReq;
- import com.ck.framework.user.entity.req.UserReq;
- import com.ck.framework.user.service.UserService;
- import io.swagger.annotations.Api;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.web.bind.annotation.*;
- /**
- * @ClassName UserController
- * @Description
- * @Author
- * @Date 2024/8/24 0:03
- * @Version 1.0
- */
- @RestController
- @RequestMapping("/user")
- @Api(value = "用户管理")
- public class UserController {
- @Autowired
- private UserService userService;
- @PostMapping
- public Result<Boolean> addUser(@RequestBody UserReq userReq) {
- UserDto userDto = new UserDto();
- userDto.setName(userReq.getName());
- userDto.setAge(userReq.getAge());
- int num = userService.addUser(userDto);
- if (num > 0) {
- return Result.success(true);
- } else {
- return Result.fail();
- }
- }
- @DeleteMapping("/{id}")
- public Result<Boolean> deleteUser(@RequestBody UserReq userReq) {
- UserDto userDto = new UserDto();
- userDto.setId(userReq.getId());
- int num = userService.delUser(userDto);
- if (num > 0) {
- return Result.success(true);
- } else {
- return Result.fail();
- }
- }
- @GetMapping
- public Result<PageResult<UserPo>> getUserPage(@RequestBody UserListReq userListReq) {
- UserDto userDto = new UserDto();
- userDto.setPageIndex(userListReq.getPageIndex());
- userDto.setPageSize(userListReq.getPageSize());
- PageResult<UserPo> pageResult = userService.getUserPage(userDto);
- return Result.success(pageResult);
- }
- }
复制代码 4. 访问 Swagger UI
启动你的 Spring Boot 应用步调后,打开欣赏器访问http://localhost:8080/swagger-ui.html,你会看到主动天生的 API 文档及其用户界面。
5.长处
- 工具链完备:
- Swagger 提供了全面的工具,包罗 Swagger Editor、Swagger Codegen 和 Swagger UI,这些工具可以涵盖从开发到文档化的各个环节。
- 广泛支持:
- 丰富的插件和社区支持:
- 可视化交互:
- Swagger UI 提供了极为友爱的界面,允许开发者以致非技能职员举行直接的API测试与调用。
6.缺点
- 集成复杂:
- 注解依靠:
- 在某些实现中,须要开发者在代码中添加大量的注解,增长了代码复杂性。
|