一、VUE框架qs框架
formdata数据格式转换
npm i qs -S
添加(main.js)
import qs from 'qs';
Vue.prototype.qs=qs;
使用:let formData= this.qs.stringify(this.ruleForm);;主要功能代替JSON对象转换为fromdata数据往后台传输,后台不用添加@RequestBody
二、jackson框架
主要用于序列化和反序列化(SpringMVC自动加载)
使用:#jackson:JSON中有null值时不显示空值
jackson: default-property-inclusion: non_null
三、在线文档 Knife4j
Knife4j是一款基于Swagger 2的在线API文档框架。当前建议使用的Knife4j版本,只适用于Spring Boot 2.6以下版本,不含Spring Boot 2.6, 在主配置文件(application.yml)中开启Knife4j的增强模式, 添加Knife4j的配置类,进行必要的配置, 必须指定控制器的包。
添加依赖
com.github.xiaoymin
knife4j-spring-boot-starter
2.0.9
主配置文件
在`application.yml`中添加配置:
```yaml
knife4j:
enable: true
添加配置类config
package cn.tedu.csmall.passport.config;
import com.github.xiaoymin.knife4j.spring.extension.OpenApiExtensionResolver;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
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.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2WebMvc;
/**
* Knife4j配置类
*
* @author [email protected]
* @version 0.0.1
*/
@Slf4j
@Configuration
@EnableSwagger2WebMvc
public class Knife4jConfiguration {
/**
* 【重要】指定Controller包路径
*/
private String basePackage = "cn.tedu.csmall.passport.controller";
/**
* 分组名称
*/
private String groupName = "passport";
/**
* 主机名
*/
private String host = "http://xxxxx.cn";
/**
* 标题
*/
private String title = "酷鲨商城在线API文档--管理员管理";
/**
* 简介
*/
private String description = "酷鲨商城在线API文档--管理员管理";
/**
* 服务条款URL
*/
private String termsOfServiceUrl = "http://www.apache.org/licenses/LICENSE-2.0";
/**
* 联系人
*/
private String contactName = "wk";
/**
* 联系网址
*/
private String contactUrl = "http://xxxxx.cn";
/**
* 联系邮箱
*/
private String contactEmail = "[email protected]";
/**
* 版本号
*/
private String version = "1.0.0";
@Autowired
private OpenApiExtensionResolver openApiExtensionResolver;
public Knife4jConfiguration() {
log.debug("加载配置类:Knife4jConfiguration");
}
@Bean
public Docket docket() {
String groupName = "1.0.0";
Docket docket = new Docket(DocumentationType.SWAGGER_2)
.host(host)
.apiInfo(apiInfo())
.groupName(groupName)
.select()
.apis(RequestHandlerSelectors.basePackage(basePackage))
.paths(PathSelectors.any())
.build()
.extensions(openApiExtensionResolver.buildExtensions(groupName));
return docket;
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title(title)
.description(description)
.termsOfServiceUrl(termsOfServiceUrl)
.contact(new Contact(contactName, contactUrl, contactEmail))
.version(version)
.build();
}
}
在Controller层中的应用 :
@Api(tags = "1管理员管理模块") :配置模块的名称
@ApiOperation("添加管理员"):配置业务的名称
@ApiOperationSupport(order = 100):给业务添加编号
@Api(tags = "1管理员管理模块")
@RestController
@RequestMapping("/admins")
public class AdminController {
@Autowired
IAdminService iAdminService;
@ApiOperation("添加管理员")
@ApiOperationSupport(order = 100)
@PostMapping("/add-new")
public JSONResult addNew(AdminAddNewDTO adminAddNewDTO) {
iAdminService.addNew(adminAddNewDTO);
return JSONResult.ok();
}
}
完成后,启动项目,通过 http://localhost:9081/doc.html 即可访问在线API文档!
四、spring-validation框架(检查封装在pojo中的对象)
org.springframework.boot
spring-boot-starter-validation
public class AlbumAddNewDTO {
@NotNull(message = "添加失败,数据不能为空")
private String name;
private String description;
private Integer sort;
}
在请求前添加@Valid注解,用于判断字符是否符合规范
@ApiOperation("添加相册")
@ApiOperationSupport(order = 400)
//在类上添加ResquestMaping 会将路径拼接起来全名("/albim/add-new")
@PostMapping(value = "/add-new")
public JSONResult addNew(@Valid AlbumAddNewDTO albumAddNewDTO) {
albumService.addNew(albumAddNewDTO);
log.trace(albumAddNewDTO.toString());
return JSONResult.ok();
}
**配置快速失败,遇到一个不符合规范的立马停止检查
@Configuration
@Slf4j
public class ValidationConfiguration {
public ValidationConfiguration() {
System.out.println("ValidationConfiguration配置类开始启动");
}
//快速失败,遇到错误立马输出并停止不载向后检查
@Bean
public javax.validation.Validator validator() {
return Validation.byProvider(HibernateValidator.class)
.configure()
.failFast(true)
.buildValidatorFactory()
.getValidator();
}
}