sentinel web接口异常处理
1、创建类异常处理类,实现BlockExceptionHandler
exception.MyBlockExceptionHandler
2、使用 @Component 注入
3、在model模块创建返回结果类
common.R
package com.wt.common; import lombok.Data; @Data public class R { private Integer code; private String msg; private Object data; public static R ok(){ R r = new R(); r.setCode(200); return r; } public static R ok(Integer code, String msg){ R r = new R(); r.setCode(code); r.setMsg(msg); return r; } public static R error(){ R r = new R(); r.setCode(500); return r; } public static R error(Integer code, String msg){ R r = new R(); r.setCode(code); r.setMsg(msg); return r; } }
4、实现重写的方法
package com.wt.order.exception; import com.alibaba.csp.sentinel.adapter.spring.webmvc_v6x.callback.BlockExceptionHandler; import com.alibaba.csp.sentinel.slots.block.BlockException; import com.fasterxml.jackson.databind.ObjectMapper; import com.wt.common.R; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import org.springframework.stereotype.Component; import java.io.PrintWriter; @Component public class MyBlockExceptionHandler implements BlockExceptionHandler { private ObjectMapper objectMapper = new ObjectMapper(); @Override public void handle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, String s, BlockException e) throws Exception { // 设置 utf-8 httpServletResponse.setContentType("application/json;charset=utf-8"); PrintWriter writer = httpServletResponse.getWriter(); // 设置返回值 R error = R.error(500, s + "被限制了" + e.getClass()); String json = objectMapper.writeValueAsString(error); writer.write(json); writer.flush(); writer.close(); } }
5、异常可以通过流控认为制造