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;

}

boot返回码规范 spring_springboot项目编码规范相关推荐

  1. boot返回码规范 spring_SpringBoot 系列 web 篇之自定义返回 Http Code 的 n 种姿势

    200105-SpringBoot 系列 web 篇之自定义返回 Http Code 的 n 种姿势 虽然 http 的提供了一整套完整.定义明确的状态码,但实际的业务支持中,后端并不总会遵守这套规则 ...

  2. boot返回码规范 spring_SpringBoot自定义异常体系和错误码规范定义(个人经验总结)...

    前言 本文说的自定义异常指的是继承了RuntimeException,专门用于Spring全局异常捕获处理的自定义异常类型,需要应用程序显示捕获并处理的异常不在本次讨论范围内. 本随笔经验总结,如有不 ...

  3. boot返回码规范 spring_sprigboot-new-coding-standards

    sprigboot-new-coding-standards 介绍 SpringBoot脚手架,遵守严格的代码规范. 规范详细说明 1.遵循标准RESTful API 2.异常采用枚举进行封装(业务内 ...

  4. boot返回码规范 spring_三种自定义SpringBoot返回的状态码

    关于如何自定义SpringBoot返回的状态码 关于HttpStatus 在SpringBoot中关于状态码有一个枚举类型,如下. public enum HttpStatus { CONTINUE( ...

  5. 开发指南专题三:JEECG微云快速开发平台项目编码规范

    开发指南专题三:JEECG微云快速开发平台项目编码规范 4. 项目编码规范 4.1. 项目编码规范 1. 项目编码格式为UTF-8(包括:java,jsp,css,js) 2. sevice接口命名: ...

  6. 开发部项目编码规范说明

    开发部项目编码规范说明 1.  格式与命名规范(Formating and Naming Conventions) 1.1    缩进 使用Tab缩进,而不是空格健 1.2    换行 单行字符不超过 ...

  7. ajax资料收集-Ajax文章(教程和实例)---Ajax资源下载(源码和教程)---Ajax规范标准

    CSDN Blog Ajax文章搜索: http://search.csdn.net/search/ajax/1/blog/ 专题:Ajax技术应用开发 http://www.51cto.com/ht ...

  8. spring boot 源码解析43-JmxMetricWriter详解

    前言 本文我们来介绍JmxMetricWriter, JmxMetricWriter是依赖于spring jmx 来实现的. 因此本文的开头先介绍一下spring boot 与jmx的集成,然后分析J ...

  9. c++ doxygen 注释规范_[代码规范]Go语言编码规范指导

    本规范旨在为日常Go项目开发提供一个代码的规范指导,方便团队形成一个统一的代码风格,提高代码的可读性,规范性和统一性.本规范将从命名规范,注释规范,代码风格和 Go 语言提供的常用的工具这几个方面做一 ...

最新文章

  1. GPT「高仿」问世:GPT-Neo,最大可达GPT-3大小,已开源 | AI日报
  2. LR中的吞吐量与响应时间
  3. android 常驻进程
  4. linux mint 13 input method of chinese
  5. vscode使用-添加格式化插件
  6. SpringBoot+El-upload实现上传文件到通用上传接口并返回文件全路径(若依前后端分离版源码分析)
  7. 【Linux】一步一步学Linux——ifdown命令(153)
  8. 程序员:最绝望的面试代码写了4个小时,就是不运行!最终收到15K的offer
  9. 需求获取安排计划书_6分钟教你写一份融资计划书
  10. oracle pl/sql编程详细,Oracle框架:PL/SQL编程:
  11. tabnavigator_使用TabNavigator在Firefox中享受桌面Alt-Tab样式导航
  12. JavaCC报错: JavaCC reported exit code 1: [-LOOKAHEAD=1, -STATIC=false
  13. python3中的rang()函数
  14. 厉害,96秒100亿,阿里双十一到底做了什么杠过亿级流量??
  15. 【3月22日】2022年百度机器学习春实习笔试题解
  16. 草根站长故事之:我的业余站长之路(中)
  17. PHP设置表格框线,ppt中表格边框线条怎样设置?
  18. uni-app开发的APP项目上线后,登录后自动检测更新,点击下载并安装,可手动检测版本更新,实现扫码下载功能
  19. 软交换总结之二-七号信令
  20. Java代码简洁-validation参数校验

热门文章

  1. Android Studio导入Fresco
  2. 通过Samba实现Win/Mac访问Linux
  3. MySQL 触发器简单实例
  4. 如何在SQL Server 2005中使用作业实现备份和特定删除
  5. python3 all any 判断迭代参数 是否全部 是否有 为true
  6. linux 内核 同步机制
  7. linux sed错误sed: -e expression #1, unknown option to `s'解决办法
  8. python3 AES 加解密
  9. Linux中TFTP使用详解
  10. VS2013编译Duilib界面库,“找不到Riched20.lib”的问题