内容简介:我们已经开发完了一个用户注册的接口,但是我们并没有测试也不知道里面哪里忽略了,有什么问题,先讲下下swagger2,然后集成到spring boot这个项目中。源码:https://github.com/limingios/wxProgram.git 中的wx-springboot
我们已经开发完了一个用户注册的接口,但是我们并没有测试也不知道里面哪里忽略了,有什么问题,先讲下下swagger2,然后集成到spring boot这个项目中。源码:https://github.com/limingios/wxProgram.git 中的wx-springboot
swagger2
-
介绍
>swagger2 是可以构建一个非常强大的,是个非常好用的 工具 也是个非常好用的插件。
- 可以生成文档形式的api并提供给不同的团队
- 便于自测,也便于领导查阅任务量。
- 无需过多冗余的word文档。保证文档是最新的。
-
使用方法
>在spring boot common中pom中引入
<!-- swagger2 配置 --> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.4.0</version> </dependency> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>2.4.0</version> </dependency>
-
添加swagger2的配置文件
>在spring boot api中加入java类
package com.idig8; import java.util.ArrayList; import java.util.List; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import springfox.documentation.builders.ApiInfoBuilder; import springfox.documentation.builders.ParameterBuilder; import springfox.documentation.builders.PathSelectors; import springfox.documentation.builders.RequestHandlerSelectors; import springfox.documentation.schema.ModelRef; import springfox.documentation.service.ApiInfo; import springfox.documentation.service.Contact; import springfox.documentation.service.Parameter; import springfox.documentation.spi.DocumentationType; import springfox.documentation.spring.web.plugins.Docket; import springfox.documentation.swagger2.annotations.EnableSwagger2; @Configuration @EnableSwagger2 public class Swagger2 { /** * @Description:swagger2的配置文件,这里可以配置swagger2的一些基本的内容,比如扫描的包等等 */ @Bean public Docket createRestApi() { // 为swagger添加header参数可供输入 ParameterBuilder userTokenHeader = new ParameterBuilder(); ParameterBuilder userIdHeader = new ParameterBuilder(); List<Parameter> pars = new ArrayList<Parameter>(); userTokenHeader.name("headerUserToken").description("userToken") .modelRef(new ModelRef("string")).parameterType("header") .required(false).build(); userIdHeader.name("headerUserId").description("userId") .modelRef(new ModelRef("string")).parameterType("header") .required(false).build(); pars.add(userTokenHeader.build()); pars.add(userIdHeader.build()); return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select() .apis(RequestHandlerSelectors.basePackage("com.idig8.controller")) .paths(PathSelectors.any()).build() .globalOperationParameters(pars); } /** * @Description: 构建 api文档的信息 */ private ApiInfo apiInfo() { return new ApiInfoBuilder() // 设置页面标题 .title("使用swagger2构建小程序后端api接口文档") // 设置联系人 .contact(new Contact("IT人故事会", "http://idig8.com", "公众号:编程坑太多")) // 描述 .description("欢迎访问接口文档") // 定义版本号 .version("1.0").build(); } }
- 修改原有的controller的修改
package com.idig8.controller; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; import com.github.pagehelper.util.StringUtil; import com.idig8.pojo.Users; import com.idig8.service.UserService; import com.idig8.utils.JSONResult; import com.idig8.utils.MD5Utils; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @RestController @Api(value="用户注册登录的接口",tags={"注册和登录的controller"}) public class RegistLoginController { @Autowired private UserService userService; @ApiOperation(value="用户注册",notes="用户注册的接口") @PostMapping("/regist") public JSONResult regist(@RequestBody Users user) { //1.判断用户名和密码不能为空 if(StringUtils.isBlank(user.getUsername())||StringUtils.isBlank(user.getPassword())) { return JSONResult.errorMsg("用户名或密码不能为空"); } //2.判断用户名是否存在 boolean usernameIsExist = userService.queryUsernameIsExist(user.getUsername()); if(!usernameIsExist) { user.setNickname(user.getUsername()); try { user.setPassword(MD5Utils.getMD5Str(user.getPassword())); } catch (Exception e) { return JSONResult.errorMsg(e.getMessage()); } user.setFollowCounts(0); user.setReceiveLikeCounts(0); user.setFansCounts(0); userService.saveUser(user); }else { return JSONResult.errorMsg("用户名或已经存在,请更换在试试!"); } return JSONResult.ok(); } }
- 增加Users属性的限制,那些必填 ,spring-boot pojo项目
package com.idig8.pojo; import javax.persistence.*; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @ApiModel(value="用户对象",description="这是用户对象") public class Users { @Id @ApiModelProperty(hidden=true) private String id; /** * 用户名 */ @ApiModelProperty(value="用户名",name="username",example="idig8",required=true) private String username; /** * 密码 */ @ApiModelProperty(value="密码",name="password",example="123456",required=true) private String password; /** * 我的头像,如果没有默认给一张 */ @Column(name = "face_image") private String faceImage; /** * 昵称 */ @ApiModelProperty(hidden=true) private String nickname; /** * 我的粉丝数量 */ @ApiModelProperty(hidden=true) @Column(name = "fans_counts") private Integer fansCounts; /** * 我关注的人总数 */ @ApiModelProperty(hidden=true) @Column(name = "follow_counts") private Integer followCounts; /** * 我接受到的赞美/收藏 的数量 */ @ApiModelProperty(hidden=true) @Column(name = "receive_like_counts") private Integer receiveLikeCounts; /** * @return id */ public String getId() { return id; } /** * @param id */ public void setId(String id) { this.id = id; } /** * 获取用户名 * * @return username - 用户名 */ public String getUsername() { return username; } /** * 设置用户名 * * @param username 用户名 */ public void setUsername(String username) { this.username = username; } /** * 获取密码 * * @return password - 密码 */ public String getPassword() { return password; } /** * 设置密码 * * @param password 密码 */ public void setPassword(String password) { this.password = password; } /** * 获取我的头像,如果没有默认给一张 * * @return face_image - 我的头像,如果没有默认给一张 */ public String getFaceImage() { return faceImage; } /** * 设置我的头像,如果没有默认给一张 * * @param faceImage 我的头像,如果没有默认给一张 */ public void setFaceImage(String faceImage) { this.faceImage = faceImage; } /** * 获取昵称 * * @return nickname - 昵称 */ public String getNickname() { return nickname; } /** * 设置昵称 * * @param nickname 昵称 */ public void setNickname(String nickname) { this.nickname = nickname; } /** * 获取我的粉丝数量 * * @return fans_counts - 我的粉丝数量 */ public Integer getFansCounts() { return fansCounts; } /** * 设置我的粉丝数量 * * @param fansCounts 我的粉丝数量 */ public void setFansCounts(Integer fansCounts) { this.fansCounts = fansCounts; } /** * 获取我关注的人总数 * * @return follow_counts - 我关注的人总数 */ public Integer getFollowCounts() { return followCounts; } /** * 设置我关注的人总数 * * @param followCounts 我关注的人总数 */ public void setFollowCounts(Integer followCounts) { this.followCounts = followCounts; } /** * 获取我接受到的赞美/收藏 的数量 * * @return receive_like_counts - 我接受到的赞美/收藏 的数量 */ public Integer getReceiveLikeCounts() { return receiveLikeCounts; } /** * 设置我接受到的赞美/收藏 的数量 * * @param receiveLikeCounts 我接受到的赞美/收藏 的数量 */ public void setReceiveLikeCounts(Integer receiveLikeCounts) { this.receiveLikeCounts = receiveLikeCounts; } }
运行项目
- 报错:没有增加扫描
Action: Consider defining a bean of type 'com.idig8.mapper.UsersMapper' in your configuration.
增加id自动生成Sid的扫描,在service里面注入了和mapper的扫描
··· java
package com.idig8;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;
import tk.mybatis.spring.annotation.MapperScan;
@SpringBootApplication
@MapperScan(basePackages=”com.idig8.mapper”)
@ComponentScan(basePackages= {“com.idig8″,”org.n3r.idworker”})
public class Application {
public static void main(String[] args) { SpringApplication.run(Application.class, args); }
}
···
- 访问网址http://localhost:8081/swagger-ui.html
点击左边的实例,修改内容,点击try it out!
返回的结果
数据库插入正常
- 里面的内容设置成空
- 用户名设置成idig8 在试试接口
PS:到这里swagger2的文档配置和接口配置,包括错误的的接口测试基本都演示完毕了。
>>原创文章,欢迎转载。转载请注明:转载自IT人故事会,谢谢!
>>原文链接地址:
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 接口高并发压测入门实战
- SpringBoot实现通用的接口参数校验,注解实战
- 实战使用 Arthas 排查生产问题:实例方法接口调用
- Python实战---制作专属有声小说(调用百度语音合成接口)
- 原 荐 下单接口调优实战,性能提高10倍
- koa2+mongoose,接口开发实战第一枪
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
C++Templates中文版
David Vandevoorde、Nicolai M.Josuttis / 陈伟柱 / 人民邮电出版社 / 2008-2 / 69.00元
本书是C++模板编程的完全指南,旨在通过基本概念、常用技巧和应用实例3方面的有用资料,为读者打下C++模板知识的坚实基础。 全书共22章。第1章全面介绍了本书的内容结构和相关情况。第1部分(第2~7章)以教程的风格介绍了模板的基本概念,第2部分(第8~13章)阐述了模板的语言细节,第3部分(第14~18章)介绍了C++模板所支持的基本设计技术,第4部分(第19~22章)深入探讨了各种使用模板......一起来看看 《C++Templates中文版》 这本书的介绍吧!