文章目录
1返回的状态吗不对?
1.1自定义返回状态码的方式
1.1.1 用ResponseEntity
![](https://i-blog.csdnimg.cn/blog_migrate/fd37ea7157f18e4a95416c3adc144fce.png#pic_center)
1.1.2@ResponseStatus定义在异常类
![](https://i-blog.csdnimg.cn/blog_migrate/fbfddbd92a5d4b4a6fe541a00be20c66.png#pic_center)
1.1.3@ResponseStatus定义在方法上
一般重定向时候用,比如重定向到response404
1.1.4@RestControllerAdvice
public class CustomException extends Exception {
public CustomException(String message) {
super(message);
}
}
/**
* <h1>全局统一异常处理</h1>
* */
@RestControllerAdvice
public class GlobalExceptionAdvice {
@ExceptionHandler(value = CustomException.class)
public ResponseEntity<GeneralResponse<String>> handleCustomException(
HttpServletRequest request, CustomException ex
) {
GeneralResponse<String> result = new GeneralResponse<>(0, "");
result.setData(ex.getMessage());
return new ResponseEntity<>(result, HttpStatus.BAD_REQUEST);
}
}
/**
* <h2>第四种方式自定义返回状态码</h2>
* */
@GetMapping("/fourth")
public GeneralResponse<String> fourth() throws CustomException {
throw new CustomException("some error");
}
2时间序列化与反序列化
例子:
2.1 @DateTimeFormat
测试:
get方法可以接收到时间参数
post 方法报错
原因:
一般都是使用@DateTimeFormat把传给后台的时间字符串转成Date,使用@JsonFormat把后台传出的Date转成时间字符串,但是@DateTimeFormat只会在类似@RequestParam的请求参数(url拼接的参数才生效,如果是放到RequestBody中的form-data也是无效的)上生效,如果@DateTimeFormat放到@RequestBody下是无效的。
在@RequestBody中则可以使用@JsonFormat把传给后台的时间字符串转成Date,也就是说@JsonFormat其实既可以把传给后台的时间字符串转成Date也可以把后台传出的Date转成时间字符串。
2.2@JsonFormat
@JsonFormat(pattern = “yyyy-MM-dd HH:mm:ss”, timezone = “GMT+8”)
private Date time;
缺点:只支持这一种格式;yyyy-MM-dd HH:mm:ss,兼容性不好
改进:写一个通用转化器,自定义一个反序列化器
2.3@JsonDeserialize 局部
package com.imooc.spring.escape.date_se_de;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.time.DateUtils;
import java.io.IOException;
import java.text.ParseException;
import java.util.Date;
@Slf4j
public class DateJacksonConverter extends JsonDeserializer<Date> {
private static final String[] pattern = new String[