Java阶段四Day06

Java阶段四Day06

文章目录

  • Java阶段四Day06
    • 关于配置响应内容中不包含Null的属性
    • 关于配置跨域
    • 关于如何不用添加@RequestBody也可以接收请求

关于配置响应内容中不包含Null的属性

Java阶段四Day06_第1张图片

响应内容中的null可以使用以下三种方式中的一种即可解决,且范围越小,越优先

  1. JsonResult中的对应属性添加注解

    @JsonInclude(JsonInclude.Include.NON_NULL)  // 在属性上配置
    private Object data;
    
  2. JsonResult类上添加注解

    @JsonInclude(JsonInclude.Include.NON_NULL)  // 在类上配置
    public class JsonResult {
    
  3. 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 将请求不到参数,那么如何在不使用这个注解的前提下,又可以获得传来的参数呢

Java阶段四Day06_第2张图片

Java阶段四Day06_第3张图片

可以在前端进行参数转化,即一开始传入的就是JSON格式参数,前端参数为FormData

Java阶段四Day06_第4张图片

上面的转换为formData,所要拼接的代码太多,也会造成诸多不便,可在控制台执行以下命令,添加qs插件

npm i qs -S

并在main.js中配置依赖

Java阶段四Day06_第5张图片

这样代码就可改写为

Java阶段四Day06_第6张图片

方便简洁,同时后端代码中可不必添加@RequestBody

你可能感兴趣的:(Java之旅,java,spring,开发语言)