发布网友 发布时间:2022-04-26 22:45
共3个回答
好二三四 时间:2022-05-22 06:32
<link rel="stylesheet" href="https://js.how234.com/jslib/syntaxhighlighter/styles/shCore.css" type="text/css" /><link rel="stylesheet" href="https://js.how234.com/jslib/syntaxhighlighter/styles/shThemeDefault.css" type="text/css" /><script type="text/javascript" src="https://js.how234.com/third-party/SyntaxHighlighter/shCore.js"></script><style>pre{overflow-x: auto}</style>
Swagger UI 简介
Swagger UI允许任何人都可以可视化API资源并与之交互,而无需任何实现逻辑。它是根据OpenAPI(以前称为Swagger)规范自动生成的,具有可视化文档,可简化后端实现和客户端使用。
SwaggerUI 特点
1、无依赖,UI可以在任何开发环境中使用,无论是本地还是在Web端中。
2、人性化,允许最终开发人员轻松地进行交互,并尝试API公开的每个操作,以方便使用。
3、易于浏览,归类整齐的文档可快速查找并使用资源和端点。
4、所有浏览器支持,Swagger UI 在所有主要浏览器中均可使用,以适应各种可能的情况。
5、完全可定制,通过完整的源代码访问方式以所需方式设置和调整Swagger UI。
6、完整的OAS支持,可视化Swagger 2.0或OAS 3.0中定义的API。
关于swagger-ui的使用过程是怎么样的?
导入jar包
<!--swagger-ui--> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.9.2</version> </dependency> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>2.9.2</version> </dependency>
编写SwaggerConfig配置文件
/** */ @EnableSwagger2 @Configuration public class SwaggerConfig { @Bean public Docket createRestApi() { return new Docket(DocumentationType.SWAGGER_2) .apiInfo(apiInfo()) .select() //为当前包路径,控制器类包 .apis(RequestHandlerSelectors.basePackage("com.stu.stusystem.controller")) .paths(PathSelectors.any()) .build(); } //构建 api文档的详细信息函数 private ApiInfo apiInfo() { return new ApiInfoBuilder() //页面标题 .title("管理系统API接口文档") //创建人 .contact(new Contact("cxt", "http://localhost", "10******34@qq.com")) //版本号 .version("1.0") //描述 .description("系统API描述") .build(); } }
2)指定静态文件地址
在swagger文件生成后需要指定下文件存放的地方。
/** * 设置静态文件地址 */ @Component public class WebConfigImpl implements WebMvcConfigurer { @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/"); registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/"); } }
3)放开swagger页面相关请求资源
比如shiro中需要设置这几项
filterChainDefinitionMap.put("/v2/api-docs/**", "anon"); filterChainDefinitionMap.put("/swagger-ui.html", "anon"); filterChainDefinitionMap.put("/swagger-resources/**", "anon"); filterChainDefinitionMap.put("/webjars/springfox-swagger-ui/**", "anon");
4)关于API文档注解
放在Controller方法上面注解
// tags 表示分组,页面中的接口进行分组 @ApiOperation(value="接口名称" ,notes="接口说明", tags="接口属于哪个分组", httpMethod="接口请求方式") // 参数说明 @ApiImplicitParams({ @ApiImplicitParam(name="参数一", value="对参数的说明", required=true [是否必须], dataType="String") …… }) // 请求成功响应格式 @ApiRespones({ @ApiResponse(code=200, message="请求成功", response=AjaxResponse.class) })
放在Bean上面
@ApiModel(value = "这个Bean的说明") @ApiModelProperty(value = "这个属性的说明", example="1,2,3") // example 中的值表示这个属性都可以返回那些值
5) swagger导出离线文档
Swagger文档 -> Asciidoc文档-> Html/pdf 文档 -> Markdown文档
1)导入需要的jar包
<!-- swagger 导出需要的jar--> <dependency> <groupId>io.github.swagger2markup</groupId> <artifactId>swagger2markup</artifactId> <version>1.3.1</version> </dependency>
2)编写测试类
需要在pom文件中添加Test测试类的jar支持
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> <exclusions> <exclusion> <groupId>org.junit.vintage</groupId> <artifactId>junit-vintage-engine</artifactId> </exclusion> </exclusions> </dependency>
@ExtendWith(SpringExtension.class)//@RunWith(SpringRunner.class) // Junit4 开发者使用这个注解@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT)public class ImportSwagger { @Test public void generateAsciiDocs() throws Exception { Swagger2MarkupConfig config = new Swagger2MarkupConfigBuilder() .withMarkupLanguage(MarkupLanguage.MARKDOWN) // 设置生成格式Markdown .withOutputLanguage(Language.ZH) // 设置语言中文 .withPathsGroupedBy(GroupBy.TAGS) .withGeneratedExamples() .withoutInlineSchema() .build(); Swagger2MarkupConverter.from(new URL("http://127.0.0.1:2020/v2/api-docs")) // 复制到浏览器中可以看到JSION数据的地址 .withConfig(config) .build() .toFile(Paths.get("src/main/resources/docs")); // 这里注意,src前面不能有 “/” }}
结果:导出成功的Markdown文档
以上就是小编今天的分享了,希望可以帮助到大家。
热心网友 时间:2022-05-22 03:40
paramType:参数放在哪个地方
paramType用于swagger ui 生成参数的输入格式。
paramType 有五个可选值 : path, query, body, header, form
不举个栗子你们是看不懂的:设置paramType 为query,填写参数 id = 1,生成:
curl -X GET --header 'Accept: application/json' 'http://localhost:9000/getData?id=1'
填其他4个参数,发送这个http请求的格式就会发生变化,会影响后台接收数据的方式
热心网友 时间:2022-05-22 04:58
现在多数的项目开发中,网站和移动端都需要进行数据交互和对接,这少不了使用REST编写API接口这种场景。例如我目前的工作,移动端交由了另一团队开发,不同开发小组之间就需要以规范和文档作为标准和协作基础。良好的文档可以让开发事半功倍,而作为又懒又要效率又能交代的码农,当然最希望一切自动化,或用小聪明来找到最适合的工具。
Swagger-UI简单而一目了然。它能够纯碎的基于html+javascript实现,只要稍微整合一下便能成为方便的API在线测试工具。项目的设计架构中一直提倡使用TDD(测试驱动)原则来开发,swagger-ui在这方面更是能提供很大帮助。
Swagger-UI更倾向于在线测试接口和数据,但其核心是一个javascript插件,只要稍作修改,便能按需求定制出不同格式的说明文档,在github上更是基于它集成到各种语言环境,分支众多。
其官方提供了一个离线版本,其使用方法十分简单:直接在js格式的资源文件中录入REST API的json信息,便能容易地生成不同模块下的API列表,每个API接口描述和参数、请求方法都能在每个json数组中定制。下面是目前项目中使用到的部分预览图