端口占用
报错信息:
APPLICATION FAILED TO START
Description:
Web server failed to start. Port 8080 was already in use.
解决办法
netstat -ano | findstr 8080
查看端口占用
杀进程
taskkill /PID 5372 /F
重启
对前端传来的明文密码进行加密处理
使用MD5加密方法
具体解决办法:
1.在数据库中存储加密过的数据(这里是手动修改)
2.在后端中EmployServerceimpl里面设置:当获取到前端传来的(明文)密码后,执行
password = DigestUtils.md5DigestAsHex(password.getBytes());
接口测试
1.导入接口文档
使用APIfox,新建项目,导入,导入文件类型选择yapi
2.配置swagger(在线测试接口)
使用的框架Knife4j继承了swagger
<dependency>
<groupld>com.github.xiaoymin</groupld>
<artifactld>knife4j-spring-boot-starter</artifactld><version>3.0.2</version>
</dependency>
# maven坐标
使用方式:
1.导入knife4j的maven坐标
2.在配置类中加入knife4j相关配置
3.设置静态资源映射,否则接口文档页面无法访问
//1.
<dependency>
<groupld>com.github.xiaoymin</groupld>
<artifactld>knife4j-spring-boot-starter</artifactld><version>3.0.2</version>
</dependency>
//2.在webmvcconfigruation里面配置,Swagger 会自动扫描 com.sky.controller 里的接口方法,并生成可视化文档页面。
@Bean
public Docket docket(){
log.info("准备生成接口文档...")
Apilnfo apilnfo = new ApilnfoBuilder()
.title(“苍穹外卖项目接口文档”).version(“2.0")
.description(“苍穹外卖项目接口文档").build();
Docket docket = new Docket(DocumentationType.SWAGGER_2)
.apilnfo(apilnfo)
.select()
//指定生成接口需要扫描的包
.apis(RequestHandlerSelectors.basePackage("com.sky.controller"))
.paths(PathSelectors.any())
.build();
return docket;
}
//3.同样在WebMvcConfiguration,能通过 /doc.html 访问文档页面,该方法addResourceHandlers是重写的,继承自WebMvcConfigurationSupport
/**
*设置静态资源映射
* @param registry
*/
protected void addResourceHandlers(ResourceHandlerRegistry registry) {
log. info(“开始设置静态资源映射...");
registry.addResourceHandler("/doc.html").addResourceLocations("classpath:/META-INF/resources");
registry.addResourceHandler("/webjars/* ".addResourceLocations("classpath:/META-INF/resources/webjars/");
//addResourceHandler请求地址映射到addResourceLocations真实地址
}
3.使用生成的在线文档进行调试
1.在需要调式的方法处加断点,在文档解析的方法中进行调试
注意:
如果没有第三步的静态地址映射 spring mvc会认为我们是在请求一个动态controller,提示报错:no mapping for GET xxx
如果第二步包名写错会导致文档里面无法解析对应方法
yapi(apifox)设计用,swagger开发用
4.常用注解(接口描述)
@Api(tags=“ ”): 用在类上,例如controlier,表示对类的说明
@ApiModel(description=“ ”): 用在类上,例如entity、DTO、Vo
@ApiModelProperty(“ ”): 用在属性上,描述属性信息,类里面有属性介绍,可以在一起注解
@ApiOperation(value=“ ”): 用在方法上,例如Controller的方法,说明方法的用途、作用
结构:
@Api()
controller{
@ApiOperation()
login(DTO)
}
@Apimodel()
DTO{
@ApiModelPropery()
Propery()
Propery()
}
3434

被折叠的 条评论
为什么被折叠?



