Java阶段四Day06
文章目录
- Java阶段四Day06
- 关于配置响应内容中不包含Null的属性
- 关于配置跨域
- 关于如何不用添加@RequestBody也可以接收请求
关于配置响应内容中不包含Null的属性
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-euAFIJer-1686896257683)(C:\Users\DELL\AppData\Roaming\Typora\typora-user-images\image-20230616110906972.png)]](https://img-blog.csdnimg.cn/76902bb4027d468ea9c500c8e60dac34.png)
响应内容中的null可以使用以下三种方式中的一种即可解决,且范围越小,越优先
-
在
JsonResult中的对应属性添加注解@JsonInclude(JsonInclude.Include.NON_NULL) // 在属性上配置 private Object data; -
在
JsonResult类上添加注解@JsonInclude(JsonInclude.Include.NON_NULL) // 在类上配置 public class JsonResult { -
在
applicaiton.yml中配置# Spring的配置 spring: # Jackson框架的配置 jackson: # 默认包含什么样的属性,响应的JSON结果中默认包含什么样的属性 default-property-inclusion: non_null #范围越小,越优先
关于配置跨域
添加CorsConfig配置类
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Slf4j
@Configuration
public class CorsConfig implements WebMvcConfigurer {
public CorsConfig(){
log.info("开启 全局跨域...");
}
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**") //服务端的任何请求都在接下来的配置范围之内
.allowedHeaders("*") //表示请求头中不管带什么都允许
.allowedMethods("*") //表示请求方式不管什么都允许
//.allowedOrigins("*") //表示客户端来自哪里都允许
.allowedOriginPatterns("*") //表示客户端来自哪里都允许 看版本选择上面还是这个
.allowCredentials(true) //是否允许携带凭证
.maxAge(3600); //有效时长,即第一次跨域访问检查有效后接下来的有效时长内不进行检查
}
}
关于如何不用添加@RequestBody也可以接收请求
@ApiOperation("新增标签类别")
@ApiOperationSupport(order = 100) // 增 1xx 删 2xx 改 3xx 查 4xx
@PostMapping("/add-new")
public JsonResult addNew(@RequestBody @Validated ContentTagTypeAddNewParam typeAddNewParam){
log.info("开始处理【新增标签类别】请求,参数:{}",typeAddNewParam);
tagService.addNew(typeAddNewParam);
return JsonResult.ok();
}
使用@RequestBody将HTTP请求体中的内容绑定到方法的参数上,添加@RequestBody接收的是对象参数,但是加上这个注解后会导致接口文档没有输入框选项,需要自行添加JSON格式的参数,这样会带来一些不便利,但是不写入@RequestBody 将请求不到参数,那么如何在不使用这个注解的前提下,又可以获得传来的参数呢
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9GUqAuaB-1686896257685)(C:\Users\DELL\AppData\Roaming\Typora\typora-user-images\image-20230616131030528.png)]](https://img-blog.csdnimg.cn/2858d4d0319644e8a5a2e7c63da570e1.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-S1LJIMPG-1686896257685)(C:\Users\DELL\AppData\Roaming\Typora\typora-user-images\image-20230616131218712.png)]](https://img-blog.csdnimg.cn/da0514b559d54a6987977b51976ffd97.png)
可以在前端进行参数转化,即一开始传入的就是JSON格式参数,前端参数为FormData
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ush90spg-1686896257686)(C:\Users\DELL\AppData\Roaming\Typora\typora-user-images\image-20230616132739068.png)]](https://img-blog.csdnimg.cn/cca244393d7b4ca4b4b555c8ef3c3765.png)
上面的转换为formData,所要拼接的代码太多,也会造成诸多不便,可在控制台执行以下命令,添加qs插件
npm i qs -S
并在main.js中配置依赖
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-S56cf4JC-1686896257686)(C:\Users\DELL\AppData\Roaming\Typora\typora-user-images\image-20230616133221622.png)]](https://img-blog.csdnimg.cn/e3b212bb1118441b9367a63f59b701b8.png)
这样代码就可改写为
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-u18OLws0-1686896257687)(C:\Users\DELL\AppData\Roaming\Typora\typora-user-images\image-20230616133259928.png)]](https://img-blog.csdnimg.cn/4338f5095eca42a9be454a8ad1a9b770.png)
方便简洁,同时后端代码中可不必添加@RequestBody



















