最近的项目用到了大神写的统一返回码的代码:
ErrorCode.java
/**
* 统一6位, 异常码
* @author Administrator
*
*/
public enum ErrorCode {
//global
OK("000000","操作成功"),
ERROR("000001","操作异常"),
PASSWD_EMPTY("002007", "密码不能为空"),
PASSWORD_ERROR("002024", "您输入的密码不正确"),
;
@Getter
private String code;
@Getter
private String message;
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
ErrorCode(String code, String message) {
this.code = code;
this.message = message;
}
public static ErrorCode getSmsCode(String code){
for (ErrorCode otpCode : ErrorCode.values()) {
if(otpCode.getCode().equals(code))
return otpCode;
}
return ErrorCode.ERROR;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
然后调用的代码大概是这样:
UserController.java
@RestController
@RequestMapping(value="user")
public class UserController {
@Autowired
private UserService userService;
@CrossOrigin
@RequestMapping(value="/login", method = RequestMethod.POST)
public Output login(String username, String password) {
return this.userService.login(username, password);
}
}
UserService.java
public interface UserService {
public Output login(String username, String password);
}
UserServiceImp.java
@Override
public Output login(String username, String password) {
// TODO Auto-generated method stub
if () {//正常
return Output.ok();
} else {
return Output.ex(ErrorCode.PASSWORD_ERROR);
}
}
然后,最后的Output.java的代码:
package com.heque.minigame.common;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.heque.minigame.common.ErrorCode;
import lombok.Data;
import lombok.experimental.Accessors;
/**
* 类 名:
* 说 明:
* 修 改 记 录:
* 版 权 所 有: Copyright © 2017
* 公 司:
* version 0.1
* date 2018/1/1
* author
*/
@Data
@Accessors
@JsonInclude(JsonInclude.Include.NON_NULL)
public class Output implements Out {
/**
* 状态码
*/
private String code;
/**
* 返回消息
*/
private String message;
/**
* 数据
*/
private T data;
/**
* 构造方法
*/
public Output() {
}
/**
* 构造方法
*
* @param code 状态码
*/
public Output(String code) {
this.code = code;
}
/**
* 构造方法
*
* @param code 状态码
* @param data 数据
*/
public Output(String code, T data) {
this.code = code;
this.data = data;
}
public Output(String code,String message) {
this.code = code;
this.message = message;
}
/**
* 处理成功
*
* @param data 数据
* @return 输出
*/
public static Output ok(T data) {
return new Output<>(ErrorCode.OK.getCode(), data);
}
public static Output
其中,让本菜不明白的是:
在UserServiceImp里只要传入一个Code,就可以让Code和Message对应起来。
后来,慢慢琢磨,才知道
ErrorCode(String code, String message) {
this.code = code;
this.message = message;
}
和
OK("000000","操作成功"),
ERROR("000001","操作异常"),
是有对应关系的。