软件测试自学之路,呼和浩特软件测试培训机构
发布于 2021-09-04 14:47 ,所属分类:软件编程学习资料
软件测试自学之路,呼和浩特软件测试培训机构
嘉宾课领取点击↓
同样是点工,凭什么他拿月薪20k,你却只有10k?
嘉宾课领取点击↓
这个我拿下了顺丰测开岗的offer,涨薪10K!
嘉宾课领取点击↓
大厂offer临门一脚,你的差距究竟在哪里?
嘉宾课领取点击↓
教科书级别的性能测试实战教程,白嫖你要不要?
嘉宾课领取点击↓
原来,安全测试做兼职,这么狠!
嘉宾课领取点击↓
和开发刚了500回,这次终于让他打脸了吧~
简介 Swagger 是最流行的 API 开发工具,它遵循 OpenAPI 规范(OpenAPI Specification,也简称 OAS)。 Swagger 可以贯穿整个 API 生态系统,例如 API 设计、API 文档、测试和部署。 Swagger 是一种通用的、独立于编程语言的 API 描述规范。应用场景如果你的RESTful API接口已经开发完成,可以使用Swagger-editor编写API文档(yaml文件或json文件),然后使用Swagger-ui渲染文件,将你的API转换成非常漂亮的形式Document ,将其展示给您的团队或客户。如果您的 RESTful API 还没有开始,您也可以使用 Swagger 来设计和标准化您的 API,并以 Annotation 的形式在您的源代码中添加额外的数据。这样,Swagger 就可以检测到这些数据,并自动生成相应的 API 文档。 Specification Swagger规范(Swagger Specification),规定了如何正确描述API信息。 Swagger 规范,以前称为 Swagger 规范,现在称为 OpenAPI 规范(简称 OAS)。 Swagger 规范本身与编程语言无关。它支持两种语法风格: YAML 语法和 JSON 语法。这两种语法风格可以相互转换,都可以用来准确描述我们RESTful API接口的信息,方便人和机器。读。在 Swagger 中,用于描述 API 信息的文档称为 Swagger 文档。 Swagger 主要有两个规范: 却却却? . Swagger 文档是整个 Swagger 生态系统的核心。 Swagger 文档有两杰型毅跑月种类型:yaml 文件和 软件测试培训班课程 json 文件。 yaml 文件使用 YAML 语法风格; json 文件使用 JSON 语法样式。这两个文件都可以用来描述API信息,并且可以相互转换。简单来说,Swagger 文档是 API 文档,但 Swagger 文档是用特定的语法编写的。 Swagger 文档本身看起来并不漂亮。这时候就需要一个好的UI工具来渲染它。这个工具是 Swagger-ui。我们可以使用任何编辑器来编写 Swagger 文档,但是为了方便编辑,同时检查 Swagger 文档是否符合规范,有 Swagger-editor 编辑器。 Swagger 工具 Swagger 提供了多种工具来帮助解决不同 api 情况下的问题。 json, or json to yaml) [安装] 网页版的Swagger-editor直接在公网上运行,Swagger已经为我们配置了在线的Swagger-editor。您也可以选择在本地运行 Swagger-editor,这需要 Node.js 环境支持。本文使用docker部署下载swagger-editor容器docker pull swaggerapi/swagger-editor docker run -d -p 81:8080 swaggerapi/swagger-editor //start, 81:8080 会将容器的8080端口暴露给81端口的localhost在浏览器中输入:localhost:81,就可以在容器中编辑api文档了。 【使用说明】: Swagger-editor 分为菜单栏和主界面两部分。主界面分为左右两栏,左边是编辑区,右边是显示区。编辑区默认有一个 Swagger 文档示例,您可以清除它并编写自己的 API 描述。显示区对应编辑区Swagger文档的UI渲染,也就是说右侧显示区的结果与使用Swagger-ui渲染Swagger文档后的显示结果基本一致。 Swagger-editor 的菜单栏包含以下菜软件测试培训班课程单: File:用于导入、导出、转换、清除 Swagger 文档 Edit:用于转换为标准的 YAML 格式文件,例如删除空行等。 Generate Server:用于构建服务端存根 生成客户端:用于构建客户端SDK 选择菜单栏【文件】另存为YAML,保存为swagger.yaml文件,也就是我们所说的swagger文档。文档编辑参考 swagger 从入门到精通 Swagger-ui Swagger-ui 是一套HTML/CSS/JS框架,用于渲染Swagger文档,以提供美观的API文档界面。换句话说,Swagger-ui 是一个 UI 渲染工具。 【安装】 docker部署,下载swagger-ui容器docker pull swaggerapi/swagger-ui 【使用】 1.使用上面部署的Swagger-editor,在编辑框中完成文档编辑,点击顶部的File -> Download JSON页面,将文件下载到本地(/Users/jiangsuyao/Downloads),命名为swagger.json 2. json文件挂在容器中 //-e:执行容器 /foo/swagger.json //-v:更改/Users /fanfan/Downloads 中的 swagger.json 挂在 /foo 中并执行 docker run -p 82:8080 -e SWAGGER_JSON=/foo/swagger.json -v /Users/jiangsuyao/Downloads:/foo swaggerapi/swagger-ui浏览输入:localhost:82,可以看到和Swagger-editor的显示区一样的内容【基于swagger-ui的界面测试】 1.选择界面,点击【试用】 2.修改中的参数“Example Value Model”,点击“Execute”发送请求 3.点击发送后,会出现如下视图,不管发送成功还是失败传输软件测试培训班课程 。可以通过以下视图查看请求数据: 【springboot集成swagger-ui自动生成API文档】 1.添加依赖<dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> id> >2.2.2</version> </dependency> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>2.2.2</version> /dependency > 2.编写配置文件在应用程序同级目录下新建swagger2文件,添加swagger2配置类包com.abel.example;导入 org.springframework.context.annotation.Bean;导入 org.springframework.context.annotation.Configuration;导入 springfox .documentation.builders.ApiInfoBuilder;导入 springfox.documentation.builders.PathSelectors;导入 springfox.documentation.builders.RequestHandlerSelectors;导入 springfox.documentation.service.ApiInfo; springfox.documentation.sfoxDocumentation.import springfox.documentation.spi. springfox.documentation.spi。 web.plugins.Docket;进口 springfox.documentation.swagger2.annotations.EnableSwagger2; @Configuration @EnableSwagger2 public class Swagger2 { @Bean public Docket createRestApi() { return new 软件测试培训班课程 Docket(DocumentationType.SWAGGER_2) .apiInfo(apiInfo()) .select() .apis(RequestHandlerSelectors.basePackage('com.abel.path. ') any()) .build(); } private ApiInfo apiInfo() { return new ApiInfoBuilder() .title('在Spring Boot中使用Swagger2构建REST APIs') s'。) .Contact('abel') .version('1.0') .build(); } 3.在控制器上添加注释,自动生成API包com.abel.example.controller; Requestimport.javax.servlet.http ; Import java.util.Map; import com.abel.example.bean.User; import io.swagger.annotations.*; import org.apache.log4j.Logger; import org.springframework.beans.factory.annotation.Autowire import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org. springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; import com.UserService.example.service ; Import c om.abel.example.util.CommonUtil; 软件测试培训班课程@Controller @RequestMapping(value='/users) ') @Api(value='用户的增删改查') 公共类UserController { @Autowired 私有UserService @Autowired UserService @Autowired 私有UserService @Autowired UserService = RequestMethod.GET) @ResponseBody @ApiOperation(value='获取用户列表,目前没有分页') public ResponseEntity<Object> findAll() { return new ResponseEntity<>(userService.listUsers(), HttpStatus.OK)}apping@Request@Request(value='/{id}', method=RequestMethod.GET) @ResponseBody @ApiOperation(value='通过id获取用户信息', notes='返回用户信息') public ResponseEntity<Object> getUserById(@PathVariable Integer id ) { Return new ResponseEntity<>(userService.getUserById(Long.valueOf(id)), HttpStatus.OK); } @RequestMapping(value='/byname', method=RequestMethod.GET) @ResmpponseParody@ResmpponseBody='查询',name='用户名' ,value='用户名',dataType='string') @ApiOperation(value= '通过用户名获取用户信息', notes='返回用户信息') public ResponseEntity<Object> getUserByUserName (HttpServletRequest request) { Map<String, Object> map=C ommonUtil.getParameterMap(request); String username=(String) map.get('username');返回新的 ResponseEntity<>(userService.getUserByUserName(username), HttpStatus.OK); } @RequestMapping(value) 软件测试培训班课程, method=RequestMethod.GET) @ResponseBody @ApiImplicitParam(paramType='query',name='username' ,value='username',dataType='string') @ApiOperation(value='搜索用户信息按用户名模糊',notes='返回用户信息') public ResponseEntity<Object> getUsers(HttpServletRequest request) { Map<String, Object> map=CommonUtil.getParameterMap(request); String username=(String) map.get('username') ;返回新的 ResponseEntity<>(userService.getByUsernameContaining(username), HttpStatus.OK); } @RequestMapping(method=RequestMethod.POST) @ResponseBody @ResponseBody @ResponseBody @ResponseBody='用户信息字符串',notes@value='用户信息', perty(string) @ApiOperation(value='新用户', notes= '返回新用户信息') public ResponseEntity<Object> saveUser(@RequestBody User user) { return new ResponseEntity<>(userService.saveUser(user), HttpStatus.OK); } @RequestMapping(metho d=RequestMethod.PUT) @ResponseBody @ApiModelProperty(value='user',notes='修改软件测试培训班课程 用户信息的json字符串') @ApiOperation(value='新用户', notes='返回新用户信息' ) 公共响应实体<Object> updateUser(@RequestBody User user) { return new ResponseEntity<>(userService.updateUser(user), HttpStatus.OK); } @RequestMapping(value='/{id}', method=RequestMethod.DELETE ) @ResponseBody @ApiOperation(value='通过id删除用户信息', notes='返回删除状态1成功0失败') public ResponseEntity< Object> deleteUser(@PathVariable Integer id) { return new ResponseEntity<>(userService.removeUser (id.longValue()), HttpStatus.OK); } 注解说明@Api:用在类上,说明类的功能。 @ApiOperation:为API添加方法描述的注解。 @ApiImplicitParams:用于在方法上包含一组参数描述。 @ApiImplicitParam:用于注解为方法参数添加说明。 @ApiResponses:用于表示一组响应@ApiResponse:用于@ApiResponses,一般用于表示不正确的响应信息@ApiModel:描述一个Model的信息(通常用于不能使用@ApiImplicitParam注解描述请求参数时) @ApiModelProperty:描述模型的属性。 @ApiResponse 参数: 代码:数字,如400 消息:信息,如“参数填充错误” 响应:抛出异常的类 @ApiImplicitParam 参数: 指定参数放在哪里 header/query/path/body/form 软件测试培训班课程 ) name: 参数名称 dataTpye: 参数类型 required: 是否必须输入(true/false) value: 参数的含义 defaultValue: 参数的默认值 4. 下载Swagger UI组件到官网下载zip包,或者在github上下载,需要将dist文件夹下的所有文件复制到webapp目录下。原理是当系统加载时,Swagger配置类扫描所有注解的接口,并通过如下地址Access存储,返回JSON数据,展示在前端界面。启动项目后,访问显示如下:
Swagger-Codegen Swagger Codegen 是一个开源的代码生成器,可以根据 Swagger 定义的 RESTful API 自动建立服务器和客户端之间的连接。 Swagger Codegen 的源代码可以在 Github 上找到。 GitHub:安装】 首先你的机器上需要有jdk,然后你只需要下载一个cli文件。 //下载#下载后运行wget,可以在返回结果中查看支持的语言#java -jar swagger-codegen-cli-2.2. 1.jar 可用语言:[android, aspnet5, async-scala, cwiki, csharp, cpprest, dart, flash, python-flask, go, groovy, java, jaxrs, jaxrs-cxf, jaxrs-resteasy, jaxrs-spec, inflector , javascript, javascript-closure-angular, jmeter, nancyfx, nodejs-server, objc, perl, php, python, qt5cpp, ruby??, scala, scalatra, silex-PHP, sinatra, rails5, slim, spring, dynamic-html, html , html2, swagger, swagger-yaml, swift, tizen, typescript-angular2, typescript-angular, typescript-node, typescript-fetch, akka-scala, CsharpDotNet2, clojure, haskell, lumen, go-server] //查看支持具体各个语言的使用帮助,如java # java -jar swagger-codegen-cli-2.2.1.jar config-help -l java 【使用】 使用swagger-codegen根据服务生成客户端代码//是官方例子,我们可以改成自己的service# java -jar swagger-codegen-cli-2.2.1.jar generate -i -l java -o samples/client/pestore/java 上面代码中用到了三个参数,分别是-i 和 -l 和 -o 尊重积极地。 -i,指定swagger描述文件的路径、url地址或路径文件;这个参数是必须的 -l,指定生成客户端代码的语言,这个参数是必须的 -o,指定生成文件的位置(默认当前目录) 除了指定上面三个参数,还有一些常用的: - c、json格式的配置文件的路径;文件为json格式,支持的配置项因语言而异 -a,获取远程swagger定义时,添加授权头信息; URL编码格式名称,多个值以逗号分隔--api-package,指定生成的api类的包名--artifact-id,在pom.xml中指定artifactId的值--artifact-version,指定pom.xml的工件版本--group-id,指定pom.xml的groupId的值--model-package,指定生成的模型类的包名-s,指定该参数表示存在不会覆盖file-t,指定模板文件所在目录生成的客户端代码: 本文内容不用于商业用途。如有涉及知识产权问题,请联系博伟峰编辑(021-64471599-8017),我们会第一时间处理
相关资源