swagger在开发阶段,对开发人员和前端人员非常友好。
Swagger对开发很重要
是的,Swagger(现在通常称为OpenAPI)对于开发非常重要,尤其是在构建和维护RESTful API时。以下是Swagger对开发重要性的几个方面:
- API文档:Swagger提供了一种标准化的方式来描述API的端点、参数、请求/响应模型以及授权机制。这使得开发者能够轻松地理解和使用API,同时也便于API的维护和更新。
- 交互式文档:Swagger UI允许开发者通过一个用户友好的界面来查看API文档,并且可以直接在浏览器中测试API端点,这大大简化了API的测试过程。
- 代码生成:Swagger可以生成客户端SDK(软件开发工具包),这些SDK可以帮助开发者快速集成API到他们的应用程序中,减少了手动编写API调用代码的工作量。
- 自动化测试:Swagger规范可以与自动化测试工具集成,帮助开发者创建和维护API测试用例,确保API的稳定性和可靠性。
- API设计优先:Swagger鼓励开发者采用“API设计优先”的方法,即在编写实际代码之前先设计API。这种方法有助于确保API的一致性和可预测性,同时也便于团队协作和沟通。
- 跨平台兼容性:由于Swagger是基于OpenAPI规范的,它提供了一种跨平台和语言无关的方式来描述和使用API,这意味着无论开发者使用什么技术栈,都可以使用相同的API文档和工具。
- API版本控制:Swagger支持API版本控制,这有助于管理API的不同版本,确保向后兼容性,同时也便于逐步迁移到新的API版本。
- 社区和生态系统:Swagger/OpenAPI有一个庞大的社区和生态系统,提供了大量的工具和插件,可以帮助开发者更高效地使用Swagger。
Swagger通过提供一套完整的工具和规范,极大地简化了API的开发、文档化、测试和维护过程,对于现代软件开发来说是一个不可或缺的工具。
Java中实现Swagger
依赖
<dependency> <groupId>io.springfox</groupId> <artifactId>springfox-boot-starter</artifactId> <version>3.0.0</version> </dependency>
配置
application.yaml
spring: # mvc这部分解决swagger3在新版本Springboot中无法展示的问题 mvc: pathmatch: matching-strategy: ANT_PATH_MATCHER
java实现配置类
@Configuration @EnableOpenApi public class SwaggerConfig { @Bean public Docket docket() { return new Docket(DocumentationType.OAS_30) .apiInfo(apiInfo()) .select()// 自行修改为自己的接口路径,不配置扫描全部路径 .apis(RequestHandlerSelectors.basePackage("com.itheima.controller")) .paths(PathSelectors.any()).build()//; .securitySchemes(securitySchemes()) .securityContexts(Collections.singletonList(securityContext())); } private ApiInfo apiInfo() { return new ApiInfoBuilder() .title("FH Admin Swagger3 RESTful API") // 页面标题 .description("fhadmin.org") // 描述 .contact(new Contact("张三丰", "http://sanfen.com", "150@163.com")) .version("3.0") // 版本号 .license("The apache license") .licenseUrl("http://www.apache.com.org") .build(); } private List<SecurityScheme> securitySchemes() { List<SecurityScheme> apiKeyList = new ArrayList<>(); //注意,这里应对应登录token鉴权对应的k-v apiKeyList.add(new ApiKey("Authorization", "Authorization", "header")); return apiKeyList; } /*** 这里设置 swagger2 认证的安全上下文*/ private SecurityContext securityContext() { return SecurityContext.builder().securityReferences(Collections.singletonList(new SecurityReference("Authorization", scopes()))).build(); } /*** 这里是写允许认证的scope*/ private AuthorizationScope[] scopes() { return new AuthorizationScope[]{new AuthorizationScope("web", "All scope is trusted!")}; } }
拦截配置
/** * 说明:Swagger 拦截配置 * 作者:FH Admin * from fhadmin.org */ @Configuration public class WebMvcConfig implements WebMvcConfigurer { @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry. addResourceHandler("/swagger-ui/**") .addResourceLocations("classpath:/META-INF/resources/webjars/springfox-swagger-ui/") .resourceChain(false); } @Override public void addViewControllers(ViewControllerRegistry registry) { registry.addViewController("/swagger-ui/") .setViewName("forward:/swagger-ui/index.html"); } }
Java使用插件集合
Java生态系统中有许多插件和工具,它们可以帮助开发者提高生产效率、简化开发流程、增强应用程序的功能等。以下是一些常用的Java插件集合及其简介:
- Maven
- 简介:Maven是一个项目管理和构建自动化工具,它使用XML配置文件来定义项目的结构和依赖关系。Maven插件可以扩展其功能,例如编译代码、运行测试、打包应用程序等。
- Gradle
- 简介:Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建工具。它使用Groovy或Kotlin DSL(领域特定语言)来定义构建脚本,提供了灵活性和强大的依赖管理。
- Spring Boot
- 简介:Spring Boot是一个简化Spring应用程序开发的框架,它提供了自动配置和约定大于配置的原则。Spring Boot插件可以帮助开发者快速启动和运行Spring应用程序,包括内嵌的Web服务器、健康检查、外部化配置等。
- Lombok
- 简介:Project Lombok是一个Java库,它通过注解自动生成样板代码,如getter、setter、构造函数、equals和hashCode方法等。这减少了代码量,提高了代码的可读性。
- JUnit
- 简介:JUnit是一个Java编程语言的单元测试框架。JUnit插件可以集成到IDE中,提供测试运行器、代码覆盖率分析等功能,帮助开发者编写和执行测试用例。
- Mockito
- 简介:Mockito是一个Java mock框架,用于编写可读性强的测试。它允许开发者创建和管理模拟对象,以便在测试中隔离被测代码。
- Log4j
- 简介:Log4j是一个Java日志记录工具,它提供了灵活的日志记录配置和多种输出目标。Log4j插件可以帮助开发者配置和管理日志记录,确保应用程序的日志信息清晰和有用。
- Hibernate
- 简介:Hibernate是一个Java持久化框架,它提供了对象关系映射(ORM)功能,简化了数据库操作。Hibernate插件可以集成到IDE中,提供代码生成、查询构建器等功能。
- Docker
- 简介:Docker是一个容器化平台,它允许开发者打包应用程序及其依赖项到一个可移植的容器中。Docker插件可以帮助Java开发者构建、运行和管理Docker容器。
- IntelliJ IDEA Plugins
- 简介:IntelliJ IDEA是一个流行的Java IDE,它提供了大量的插件来增强开发体验,例如代码分析、重构工具、版本控制集成等。
这些插件和工具只是Java生态系统中的一小部分,但它们对于Java开发来说是非常重要的。开发者可以根据自己的需求选择合适的插件来提高开发效率和代码质量。
关注我,不迷路,共学习,同进步