图中观察需要三个接口
1、检查用户名是否存在
@GetMapping("checkUsername")
public Result checkUsername(String username){
if(StringUtils.isBlank(username)){
return Result.error(CodeMsg.USERNAME_EMPTY);
}
if(usersService.checkUsername(username)){
return Result.error(CodeMsg.USERNAME_EXIST);
}
return Result.success();
}
2、注册
@PostMapping("register")
public Result register(@RequestBody UsersBo usersBo){
if(StringUtils.isBlank(usersBo.getUsername())){
return Result.error(CodeMsg.USERNAME_EMPTY);
}
if(StringUtils.isBlank(usersBo.getPassword())){
return Result.error(CodeMsg.PWD_EMPTY);
}
if(usersBo.getPassword().length() < 6){
return Result.error(CodeMsg.PWD_SHORT);
}
if(usersService.checkUsername(usersBo.getUsername())){
return Result.error(CodeMsg.USERNAME_EXIST);
}
Users users = usersService.register(usersBo);
if (users == null)
return Result.error(CodeMsg.USERNAME_EXIST);
return Result.success(users);
}
3、登录
@PostMapping("login")
public Result doLogin(@RequestBody UsersBo usersBo){
Users users = usersService.doLogin(usersBo);
if (users == null){
return Result.error(CodeMsg.USERNAME_PWD_ERROR);
}
return Result.success(users);
}
4、接口文档配置
- 引入依赖
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-spring-boot-starter</artifactId>
<version>3.0.2</version>
</dependency>
- 新增配置文件
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.oas.annotations.EnableOpenApi;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
@Configuration
@EnableOpenApi
public class Swagger2 {
@Value("${swagger.enabled}")
private Boolean enabled;
@Bean
public Docket createApi() {
return new Docket(DocumentationType.OAS_30)
.enable(enabled)
.apiInfo(getApiInfo())
.select()
.apis(RequestHandlerSelectors.basePackage("com.njzy.controller"))//指定controller所在目录
.paths(PathSelectors.any()).build();
}
public ApiInfo getApiInfo() {
return new ApiInfoBuilder().title("接口文档")
//.contact(new Contact("宁静致远","","")) //联系人
//.description("接口文档的描述") 接口描述
.version("1.0.0") //版本信息
//.termsOfServiceUrl("")//网站地址
.build();
}
}
相关配置文件
server:
# 访问端口号
port: 8088
servlet:
context-path: /api
tomcat:
uri-encoding: UTF-8
# 最大http header大小
max-http-header-size: 80KB
# 是否开启swagger
swagger:
enabled: true
- 访问地址 http://localhost:8088/api/doc.html 查看文档
Controller完整代码
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@Api(tags = "用户相关接口")
@RestController
@RequestMapping("user")
public class UsersController {
@Autowired
private UsersService usersService;
/**
* @param username 如果加了@RequestParam 没有该参数时会被拦截
*/
@ApiOperation( "用户名是否存在")
@GetMapping("checkUsername")
public Result checkUsername(String username){
if(StringUtils.isBlank(username)){
return Result.error(CodeMsg.USERNAME_EMPTY);
}
if(usersService.checkUsername(username)){
return Result.error(CodeMsg.USERNAME_EXIST);
}
return Result.success();
}
@ApiOperation( "注册")
@PostMapping("register")
public Result register(@RequestBody UsersBo usersBo){
if(StringUtils.isBlank(usersBo.getUsername())){
return Result.error(CodeMsg.USERNAME_EMPTY);
}
if(StringUtils.isBlank(usersBo.getPassword())){
return Result.error(CodeMsg.PWD_EMPTY);
}
if(usersBo.getPassword().length() < 6){
return Result.error(CodeMsg.PWD_SHORT);
}
if(usersService.checkUsername(usersBo.getUsername())){
return Result.error(CodeMsg.USERNAME_EXIST);
}
Users users = usersService.register(usersBo);
if (users == null)
return Result.error(CodeMsg.USERNAME_EXIST);
return Result.success(users);
}
@ApiOperation( "登录")
@PostMapping("login")
public Result doLogin(@RequestBody UsersBo usersBo){
Users users = usersService.doLogin(usersBo);
if (users == null){
return Result.error(CodeMsg.USERNAME_PWD_ERROR);
}
return Result.success(users);
}
}
UsersBo.java
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel(value = "用户",description = "由前端传入的user")
public class UsersBo {
/**
* 用户名 用户名
*/
@ApiModelProperty(value = "用户名",example = "张三",required = true)
private String username;
/**
* 密码 密码
*/
@ApiModelProperty(value = "密码(注册无需前端加密, 登录前端加密)",example = "123456",required = true)
private String password;
}
- @Data是lombok插件 可以省略get/set方法相关依赖如下:
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
<version>1.18.18</version>
</dependency>
- postman 测试接口地址 http://localhost:8088/api/user/想测试的接口地址
- 文档地址展示如下: