JSON统一格式返回值,统一异常处理
来源:互联网 发布:高光谱遥感数据 编辑:程序博客网 时间:2024/05/22 07:01
一,如果编写接口给他人调用,只有一段返回数据,没有其他信息说明这是非常不好的。
那问题来了,怎么不好呢?1,如果知识返回一段调用后的数据那还好,要是调用失败呢?如果没有返回码,没有信息提示,就让调用者去猜测吗,而不能做其他的处理。
所以为了更加规范的处理返回格式的问题,我把json封装了起来。
二,具体实现
用一个实体类规范json返回的格式
/** * @author Stopping * @see 统一json返回格式 * */public class Result {/*返回码*/private Integer code;/*返回信息提示*/private String message;/*返回的数据*/private Object data;public Result(){}public Result(Integer code,String message,Object data) {this.code = code;this.message = message;this.data = data;}@Overridepublic String toString() {return "Result [code=" + code + ", message=" + message + ", data=" + data + "]";}public Integer getCode() {return code;}public void setCode(Integer code) {this.code = code;}public String getMessage() {return message;}public void setMessage(String message) {this.message = message;}public Object getData() {return data;}public void setData(Object data) {this.data = data;}}
编写一个枚举类,统一管理异常返回信息
/** * @author Stopping * @data 时间:2017/9/27 * */public enum ResultEnum {/**访问成功返回*/SUCCESS(0,"success"),/**数据不存在返回*/NOT_FOUND(-1,"notFound [数据不存在 或者 数据为空]"),/**异常返回*/ERROR(-1,"error [未知异常]"),/**参数有异常返回*/PARAMETER_ERROR(-1,"parameter error [参数异常:参数为空或者参数类型不符]");private Integer code;private String msg;private ResultEnum(Integer code,String msg) {this.code = code;this.msg = msg;}public Integer getCode() {return code;}public String getMsg() {return msg;}}
编写rusult工具类
/** * @author Stopping * @Data 2017/9/25 * @see json返回值统一格式化工具类 * */public class ResultUtil {/** * 数据交互成功返回 * @param object json返回的数据 * */public static Result success(Object object){if(object==null){object = "";}return new Result(ResultEnum.SUCCESS.getCode(),ResultEnum.SUCCESS.getMsg(),object);}/** * 数据交互 * */public static Result notFound(){return new Result(ResultEnum.NOT_FOUND.getCode(),ResultEnum.NOT_FOUND.getMsg(),"");}/** * 参数异常 * */public static Result parameterError(){return new Result(ResultEnum.PARAMETER_ERROR.getCode(),ResultEnum.PARAMETER_ERROR.getMsg(),"");}/** * 系统异常 * */public static Result systemError(){return new Result(ResultEnum.ERROR.getCode(),ResultEnum.ERROR.getMsg(),"");}}
import java.util.List;import com.jeecms.cms.entity.back.ResultEnum;import com.jeecms.common.exception.NotFoundException;import com.jeecms.common.exception.ParameterException;/** * @author Stopping * * 返回结果集对参数,结果判断的方法 * */public class ResultMethodUtil {/** * 判断Integer类型的参数是否为空,为空则抛出参数异常 * @param intergers * */public static void judgeIntegerNull(Integer...integers)throws Exception{if ( integers==null || integers.length == 0) {throw new ParameterException(ResultEnum.PARAMETER_ERROR);}for(Integer i : integers){if(i==null){throw new ParameterException(ResultEnum.PARAMETER_ERROR);}}}/** * 判断String类型的参数是否为空,为空则抛出参数异常 * @param value * */public static void judgeStringNull(String...value)throws Exception{for(String i : value){if(i=="" || i==null ||"".equals(i)){throw new ParameterException(ResultEnum.PARAMETER_ERROR);}}}/** * 判断返回值是否为空 * */public static void judgeReturnNull(Object o){if(o instanceof List){if(((List) o).size()==0 || o==null){throw new NotFoundException(ResultEnum.NOT_FOUND);}}else{if(o==null || o.equals("") ){throw new NotFoundException(ResultEnum.NOT_FOUND);}}}}
编写自定义异常类,用于统一异常处理(统一异常处理可参考 SpringMVC统一异常处理:点击打开链接)
import com.jeecms.cms.entity.back.ResultEnum;public class ParameterException extends RuntimeException{private Integer code;public ParameterException(ResultEnum r) {super(r.getMsg());this.code = r.getCode();}public Integer getCode() {return code;}public void setCode(Integer code) {this.code = code;}}
import java.io.IOException;import java.io.PrintWriter;import java.util.HashMap;import java.util.Map;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.web.servlet.HandlerExceptionResolver;import org.springframework.web.servlet.ModelAndView;import com.alibaba.fastjson.JSON;import com.jeecms.common.util.ResultUtil;import com.jeecms.common.web.ResponseUtils;public class HandleException implements HandlerExceptionResolver{private final static Logger logger = LoggerFactory.getLogger(HandleException.class);@Overridepublic ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handle,Exception ex) {/** 参数异常 */if(ex instanceof ParameterException){ResponseUtils.renderJson(response,JSON.toJSONString(ResultUtil.parameterError()));return null;}/** 空值异常 */else if(ex instanceof NotFoundException){ResponseUtils.renderJson(response,JSON.toJSONString(ResultUtil.notFound()));return null;}/** 未知异常 */else{logger.error("系统异常",ex);ResponseUtils.renderJson(response,JSON.toJSONString(ResultUtil.systemError()));return null;}}}
ResponseUtils.renderJson(response, JSON.toJSONString(ResultUtil.success(columns)));
效果:
阅读全文
1 0
- JSON统一格式返回值,统一异常处理
- SpringMVC统一异常处理 返回JSON解决方案
- Spring MVC 全局异常处理-RESTAPI接口返回统一JSON格式-自定义异常处理--404异常捕捉
- spring mvc统一处理异常时候返回json或xml
- Spring MVC 异常处理统一为json格式
- springmvc返回统一格式json数据
- 一个项目:统一返回值,控制层统一异常处理与项目添加
- 规范响应格式以及统一异常处理
- Spring 返回JSON格式对日期字段的返回统一处理
- springmvc 通过异常增强返回给客户端统一格式 springmvc请求参数异常处理
- 开发框架-Spring-错误或异常时返回统一的json格式
- 统一的处理异常
- 统一异常处理
- strut2 统一异常处理
- Spring统一异常处理
- 异常的统一处理
- sprimgmvc统一处理异常
- springmvc统一异常处理
- Hibernate的@Table注解
- 两次写
- A Guide For Time Series Prediction Using Recurrent Neural Networks (LSTMs)
- 清北学堂-D2-T2-chance
- win10 Jdk环境变量配置
- JSON统一格式返回值,统一异常处理
- 发个博客
- js直接插入排序
- nltk.download("stopwords")
- 天池 odps_SQL 常用函数和方法
- LWC 52:686. Repeated String Match
- 算法分析与设计——LeetCode:4. Median of Two Sorted Arrays
- Java多线程笔记三(线程通信wait/notify/notifyAll/sleep/yield/join)
- android getContext() , getApplicationContext() , getBaseContext() and “this”