赞
踩
这里为什么要使用SpringDoc呢?是因为集成SpringFox只支持SpringBoot2.x,
而基于Swagger的SpringDoc的社区现在十分活跃,代码也在不断更新。
SpringFox自从2020年7月14号之后就不更新了。
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
<version>2.0.2</version>
</dependency>
这里和Swagger配置类似,主要是配置接口的标题、描述、版本信息、Authorizations权限等。
下面两个分组信息也可以根据项目自身进行配置即可。
import org.springdoc.core.models.GroupedOpenApi; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import io.swagger.v3.oas.models.Components; import io.swagger.v3.oas.models.ExternalDocumentation; import io.swagger.v3.oas.models.OpenAPI; import io.swagger.v3.oas.models.info.Info; import io.swagger.v3.oas.models.info.License; import io.swagger.v3.oas.models.security.SecurityScheme; /** * SpringDoc 配置类 * * @author Jack魏 * @since 2023/1/8 16:51 */ @Configuration public class OpenApiConfig { /** * SpringDoc 标题、描述、版本等信息配置 * * @return openApi 配置信息 */ @Bean public OpenAPI springDocOpenAPI() { return new OpenAPI().info(new Info() .title("YiYi API") .description("YiYi接口文档说明") .version("v0.0.1-SNAPSHOT") .license(new License().name("YiYi项目博客专栏") .url("https://blog.csdn.net/weihao0240/category_12166012.html"))) .externalDocs(new ExternalDocumentation() .description("码云项目地址") .url("https://gitee.com/jack0240/YiYi")) // 配置Authorizations .components(new Components().addSecuritySchemes("bearer-key", new SecurityScheme().type(SecurityScheme.Type.HTTP).scheme("bearer"))); } /** * demo 分组 * * @return demo分组接口 */ @Bean public GroupedOpenApi siteApi() { return GroupedOpenApi.builder() .group("demo接口") .pathsToMatch("/demo/**") .build(); } /** * sys 分组 * * @return sys分组接口 */ @Bean public GroupedOpenApi adminApi() { return GroupedOpenApi.builder() .group("sys接口") .pathsToMatch("/sys/**") .build(); } }
可以看到注解的方式和Swagger基本上一模一样,就是名字有所变化而已。
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import com.jack.yiyi.bean.SysUser; import com.jack.yiyi.service.sys.SysUserService; import com.jack.yiyi.util.Result; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Parameters; import io.swagger.v3.oas.annotations.tags.Tag; /** * 系统用户Controller控制类 * * @author Jack魏 * @since 2022-11-12 */ @Tag(name = "系统用户接口", description = "系统用户接口") @RestController @RequestMapping("/sys/user/") public class SysUserController { @Autowired private SysUserService sysUserService; /** * 注册后台系统用户 * * @param sysUser 前端注册信息 * @return 注册用户信息 */ @Operation(summary = "注册接口", description = "输入用户信息进行注册") @Parameters({ @Parameter(name = "account", description = "登录账号", required = true), @Parameter(name = "password", description = "密码", required = true) }) @PostMapping("register") public Result<String> register(SysUser sysUser) { // 登录名参数校验 if (sysUser.getAccount() == null || "".equals(sysUser.getAccount())) { return Result.fail("注册用户名不能为空"); } // 密码参数校验 if (sysUser.getPassword() == null || "".equals(sysUser.getPassword())) { return Result.fail("密码不能为空"); } SysUser user = sysUserService.register(sysUser); if (user == null) { return Result.fail("注册失败!请更换登录名!"); } return Result.success("注册成功,欢迎您:" + sysUser.getAccount()); } }
通过上面的配置之后,启动项目即可,然后访问:
http://127.0.0.1:8181/yiyi/swagger-ui/index.html
因为此项目也配置了Security,所以先输入用户:user、密码:123456
官网地址:https://springdoc.org/v2/#migrating-from-springfox
SpringFox | SpringDoc | 作用 |
---|---|---|
@Api | @Tag | 在controller类上声明接口 |
@ApiIgnore | @Parameter(hidden = true) 或 @Operation(hidden = true) 或 @Hidden | 接口隐藏 |
@ApiImplicitParam | @Parameter | 单个参数说明 |
@ApiImplicitParams | @Parameters | 多个参数说明 |
@ApiModel | @Schema | 对实体类说明 |
@ApiModelProperty(hidden = true) | @Schema(accessMode = READ_ONLY) | 字段隐藏 |
@ApiModelProperty | @Schema | 实体类字段说明 |
@ApiOperation(value = “foo”, notes = “bar”) | @Operation(summary = “foo”, description = “bar”) | 接口方法说明 |
@ApiParam | @Parameter | 单个参数说明 |
@ApiResponse(code = 404, message = “foo”) | @ApiResponse(responseCode = “404”, description = “foo”) | 返回说明 |
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。