boot返回码规范 spring_springboot项目编码规范

1.统一返回消息体规范

/**

* 用户信息接口

* @return

*/

@ApiOperation(value = "用户信息接口", notes = "用户信息接口")

@GetMapping(value = "/{id}")

public Resp getUser(@PathVariable("id") Integer id) {

Resp resp=Resp.success();

resp.setData(tUserRepository.findTUserEntityById(id));

return resp;

}

/**

* 自定义异常message接口,默认失败code=1

* @return

*/

@ApiOperation(value = "自定义异常message接口", notes = "自定义异常message接口")

@GetMapping(value = "/error3/{id}")

public Resp updateUser3(@PathVariable("id") Integer id) {

try{

tUserRepository.findByRoleId(id);

}catch (Exception e){

log.error("维修订单终止失败..." + e.getMessage(), e);

return Resp.failed("维修订单终止失败...");

}

return Resp.success();

}

package com.dousnl.utils.response;

import org.springframework.validation.BindingResult;

import org.springframework.validation.FieldError;

public class Resp {

private RespStatus status;

private Object data;

public Resp(){

}

public Resp(RespStatus status, Object data){

this.status = status;

this.data = data;

}

public Resp(RespStatus status) {

super();

this.status = status;

}

public Object getData() {

return data;

}

public Resp setData(Object data) {

this.data = data;

return this;

}

public RespStatus getStatus() {

return status;

}

public Resp setStatus(RespStatus status) {

this.status = status;

return this;

}

public static Resp success() {

return new Resp().setStatus(RespStatus.SUCCESSFUL);

}

//添加 成功并返回信息 wulingchi 2016-11-01

public static Resp success(String msg) {

final String c = String.valueOf(RespStatus.CODE_SUCCESSFUL);

final RespStatus s = new RespStatus(c, msg);

return new Resp().setStatus(s);

}

public static Resp failed() {

return new Resp().setStatus(RespStatus.FAILED);

}

public static Resp failed(String msg) {

final String c = String.valueOf(RespStatus.CODE_FAILED);

final RespStatus s = new RespStatus(c, msg);

return new Resp().setStatus(s);

}

public static Resp failed(BindingResult bindingResult){

final FieldError fieldError = bindingResult.getFieldError();

final String code = RespStatus.FAILED.getCode();

final String msg = fieldError.getDefaultMessage();

final RespStatus s = new RespStatus(code, msg);

return new Resp().setStatus(s);

}

public static Resp failed(String code, String msg){

final RespStatus s = new RespStatus(code, msg);

return new Resp().setStatus(s);

}

}

package com.dousnl.utils.response;

public class RespStatus {

public static final long CODE_SUCCESSFUL = 0L;

public static final String MSG_SUCCESSFUL = "ok";

public static final long CODE_FAILED = 1L;

public static final String MSG_FAILED = "failed";

public static final RespStatus SUCCESSFUL = new RespStatus(String.valueOf(CODE_SUCCESSFUL), MSG_SUCCESSFUL);

public static final RespStatus FAILED = new RespStatus(String.valueOf(CODE_FAILED), MSG_FAILED);

private String code;

private String msg;

public String getCode() {

return code;

}

public String getMsg() {

return msg;

}

public RespStatus() {

super();

}

public RespStatus(String code) {

super();

this.code = code;

}

public RespStatus(String code, String msg) {

this.code = code;

this.msg = msg;

}

public static long getCodeSuccessful() {

return CODE_SUCCESSFUL;

}

public static String getMsgSuccessful() {

return MSG_SUCCESSFUL;

}

public static long getCodeFailed() {

return CODE_FAILED;

}

public static String getMsgFailed() {

return MSG_FAILED;

}

public static RespStatus getSUCCESSFUL() {

return SUCCESSFUL;

}

public static RespStatus getFAILED() {

return FAILED;

}

public void setCode(String code) {

this.code = code;

}

public void setMsg(String msg) {

this.msg = msg;

}

}

2.全局异常返回信息

package com.dousnl.config.exception;

import com.dousnl.utils.enums.ErrorEnums;

import com.dousnl.utils.exception.MyException;

import com.dousnl.utils.response.Resp;

import lombok.extern.slf4j.Slf4j;

import org.springframework.http.HttpStatus;

import org.springframework.web.bind.annotation.ExceptionHandler;

import org.springframework.web.bind.annotation.ResponseStatus;

import org.springframework.web.bind.annotation.RestControllerAdvice;

/**

* 通用异常返回信息

*

* @author hanliang

* @version 1.0

* @date 2019/11/4 14:22

*/

@Slf4j

@RestControllerAdvice

public class ControllerExceptionHandler {

@ExceptionHandler(value = MyException.class)

public Resp myErrorHandler(MyException ex){

log.error("异常信息:" + ex.getMessage(), ex);

return Resp.failed(ex.getErrorCode(),ex.getMessage());

}

/**

* 默认的异常处理

* @param ex

* @return

*/

@ExceptionHandler(value = Exception.class)

@ResponseStatus(HttpStatus.OK)

public Resp exceptionHandler(Exception ex) {

log.error("异常信息:" + ex.getMessage(), ex);

return Resp.failed(ErrorEnums.SYSTEM_EXCEPTION.getCode(),ErrorEnums.SYSTEM_EXCEPTION.getMessage());

}

}

package com.dousnl.utils.exception;

import com.dousnl.utils.enums.ErrorEnums;

/**

* 自定义异常

*

* @author hanliang

* @version 1.0

* @date 2019/11/4 14:25

*/

public class MyException extends RuntimeException{

private String errorCode;

private String message;

public MyException() {

}

public MyException(ErrorEnums enums){

this.errorCode=enums.getCode();

this.message=enums.getMessage();

}

public String getErrorCode() {

return errorCode;

}

public void setErrorCode(String errorCode) {

this.errorCode = errorCode;

}

@Override

public String getMessage() {

return message;

}

public void setMessage(String message) {

this.message = message;

}

}

package com.dousnl.utils.enums;

import lombok.AllArgsConstructor;

import lombok.Getter;

/**

* 异常返回信息枚举

*

* @author 韩亮

* @version $ID:ErrorEnums, v0.1 2018/3/30 韩亮 Exp $

*/

@Getter

@AllArgsConstructor

public enum ErrorEnums {

//权限异常

SYSTEM_NOT_AUTHENTICATION_ERROR("401", "用户暂未认证"),

SYSTEM_UNAUTHORIZED_ERROR("403", "用户无权限"),

SYSTEM_TOKEN_VALIDATOR_ERROR("998", "TOKEN验证错误"),

SYSTEM_SQL_INJECT_ERROR("999", "参数存在sql注入风险"),

SYSTEM_ALREADY_LOGIN("error_login","您的账号已在其他终端登录,如不是您本人操作,请及时联系后台"),

//==================通用错误码定义====================

SUCCESS("000000", "交易成功"),

SYSTEM_BEAN_COPY_ERROR("000001", "对象拷贝异常"),

SYSTEM_STRING_TO_DATE_ERROR("000002", "字符串转日期失败"),

SYSTEM_PARAM_VALIDATOR_ERROR("000003", "参数校验失败"),

DB_ERROR("000010", "数据库查询异常"),

DB_INSERT_ERROR("000011", "数据库插入异常"),

DB_UPDATE_ERROR("000012", "数据库更新异常"),

DB_SELECT_ERROR("000013", "数据库查询异常"),

LOGIN_ERROR("000020", "登录失败"),

LOGIN_USER_NOT_EXIST_ERROR("000021", "用户不存在"),

LOGIN_AUTHENTICATION_FAILURE("000022", "身份验证失败"),

LOGIN_AD_CONNECT_ERROR("000023", "AD域连接失败"),

LOGIN_TOKEN_CREATE_ERROR("000024", "token生成失败"),

LOGIN_USER_DISABLED("000025", "用户状态为无效状态"),

EXPORT_FOUR_BANK_ERROR("000030", "四大银行报表导出失败"),

NO_PERMISSION_TO_DOWNLOAD("000031","没有权限下载或文件不存在"),

NO_QUALIFICATION_UPDATE_TO_PROJECTTYPE("000032","B级卡信息未完善,请完善B级卡信息"),

NO_DATA_SHIRO("000034","没有资格更新项目银行类型"),

EXPORT_Daily_Monitoring_ERROR("000035", "日常监控报表导出失败"),

RONG_CLOUD_REST_ERROR("000408", "融云服务端请求失败"),

SYSTEM_EXCEPTION("5000", "系统异常!"),

;

private final String code;

private final String message;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
- chapter1:[基本项目构建(可作为工程脚手架),引入web模块,完成一个简单的RESTful API](http://blog.didispace.com/spring-boot-learning-1/) - [使用Intellij中的Spring Initializr来快速构建Spring Boot/Cloud工程](http://blog.didispace.com/spring-initializr-in-intellij/) ### 工程配置 - chapter2-1-1:[配置文件详解:自定义属性、随机数、多环境配置等](http://blog.didispace.com/springbootproperties/) ### Web开发 - chapter3-1-1:[构建一个较为复杂的RESTful API以及单元测试](http://blog.didispace.com/springbootrestfulapi/) - chapter3-1-2:[使用Thymeleaf模板引擎渲染web视图](http://blog.didispace.com/springbootweb/) - chapter3-1-3:[使用Freemarker模板引擎渲染web视图](http://blog.didispace.com/springbootweb/) - chapter3-1-4:[使用Velocity模板引擎渲染web视图](http://blog.didispace.com/springbootweb/) - chapter3-1-5:[使用Swagger2构建RESTful API](http://blog.didispace.com/springbootswagger2/) - chapter3-1-6:[统一异常处理](http://blog.didispace.com/springbootexception/) ### 数据访问 - chapter3-2-1:[使用JdbcTemplate](http://blog.didispace.com/springbootdata1/) - chapter3-2-2:[使用Spring-data-jpa简化数据访问层(推荐)](http://blog.didispace.com/springbootdata2/) - chapter3-2-3:[多数据源配置(一):JdbcTemplate](http://blog.didispace.com/springbootmultidatasource/) - chapter3-2-4:[多数据源配置(二):Spring-data-jpa](http://blog.didispace.com/springbootmultidatasource/) - chapter3-2-5:[使用NoSQL数据库(一):Redis](http://blog.didispace.com/springbootredis/) - chapter3-2-6:[使用NoSQL数据库(二):MongoDB](http://blog.didispace.com/springbootmongodb/) - chapter3-2-7:[整合MyBatis](http://blog.didispace.com/springbootmybatis/) - chapter3-2-8:[MyBatis注解配置详解](http://blog.didispace.com/mybatisinfo/) ### 事务管理 - chapter3-3-1:[使用事务管理](http://blog.didispace.com/springboottransactional/) - chapter3-3-2:[分布式事务(未完成)] ### 其他内容 - chapter4-1-1:[使用@Scheduled创建定时任务](http://blog.didispace.com/springbootscheduled/) - chapter4-1-2:[使用@Async实现异步调用](http://blog.didispace.com/springbootasync/) #### 日志管理 - chapter4-2-1:[默认日志的配置](http://blog.didispace.com/springbootlog/) - chapter4-2-2:[使用log4j记录日志](http://blog.didispace.com/springbootlog4j/) - chapter4-2-3:[对log4j进行多环境不同日志级别的控制](http://blog
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值