JAVA - API 定义 统一返回

    技术2022-07-10  162

    一。定义创建统一返回的格式 和定义枚举

    package com.baking.baking.zander.enums; /** * @author: Zander * @description: 错误返回通用枚举 */ public enum ResponseEnum { /** * 成功 */ SUCCESS(0, "successful"), /** * 失败 */ FAILURE(-1, "服务器错误"); private int code; private String msg; ResponseEnum(int code, String msg) { this.code = code; this.msg = msg; } public int getCode() { return code; } public String getMsg() { return msg; } } package com.baking.baking.zander.response; import com.baking.baking.zander.enums.ResponseEnum; import lombok.Data; import java.io.Serializable; /** * @author: Zander * @description: 统一返回 */ @Data public class Response implements Serializable { private static final long serialVersionUID = 7352795226774903119L; private boolean success = true; private int code; private String msg; private Object data; public Response() { } public Response(ResponseEnum result) { this.code = result.getCode(); this.msg = result.getMsg(); } public Response(ResponseEnum result, Object data) { this.code = result.getCode(); this.msg = result.getMsg(); this.data = data; } @Override public String toString() { return "Response{" + "code=" + code + ", msg='" + msg + '\'' + ", data=" + data + '}'; } }

    二。定义 BaseController  让每个 业务Controller 去继承 BaseController

    package com.baking.baking.zander.base; import com.baking.baking.zander.enums.ResponseEnum; import com.baking.baking.zander.response.Response; import org.springframework.beans.propertyeditors.CustomDateEditor; import org.springframework.web.bind.ServletRequestDataBinder; import org.springframework.web.bind.annotation.InitBinder; import org.springframework.web.bind.annotation.ModelAttribute; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.text.SimpleDateFormat; import java.util.Date; /** * @author Zander * @description: BaseController */ public abstract class BaseController { @InitBinder public void initBinder(ServletRequestDataBinder binder) { /** * 自动转换日期类型的字段格式 */ binder.registerCustomEditor(Date.class, new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd"), true)); } protected HttpServletRequest request; protected HttpServletResponse response; @ModelAttribute public void setRequestAndResponse(HttpServletRequest request, HttpServletResponse response) { this.request = request; this.response = response; } protected Response renderError(ResponseEnum responseEnum) { Response response = new Response(responseEnum); response.setSuccess(false); return response; } protected Response renderError(String msg) { Response response = new Response(); response.setSuccess(false); response.setCode(ResponseEnum.FAILURE.getCode()); response.setMsg(msg); return response; } protected Response renderSuccess(String msg) { Response response = new Response(); response.setMsg(msg); response.setCode(ResponseEnum.SUCCESS.getCode()); return response; } protected Response renderSuccess(Object obj) { return new Response(ResponseEnum.SUCCESS, obj); } /** * redirect跳转 * * @param url 目标url */ protected String redirect(String url) { return "redirect:" + url; } }

    三。实际业务场景使用

    package com.baking.baking.controller; import com.baking.baking.entity.dto.UserDTO; import com.baking.baking.entity.dto.UserLoginDTO; import com.baking.baking.entity.dto.UserPageDTO; import com.baking.baking.entity.vo.AdminUserVO; import com.baking.baking.service.IAdminUserService; import com.baking.baking.zander.base.BaseController; import com.baking.baking.zander.response.Response; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.validation.Valid; /** * <p> * 前端控制器 * </p> * * @author Zander123 * @since 2020-06-22 */ @Api(tags = "User API") @RestController @RequestMapping("/adminUser") public class AdminUserController extends BaseController { private final IAdminUserService adminUserService; @Autowired public AdminUserController(IAdminUserService adminUserService) { this.adminUserService = adminUserService; } @ApiOperation("用户登陆") @PostMapping("/login") @ResponseBody Response login(@RequestBody @Valid UserLoginDTO userDTO){ AdminUserVO adminUserVO = adminUserService.login(userDTO); if(adminUserVO !=null){ return renderSuccess(adminUserVO); } return renderError("用戶名密碼錯誤或該用戶已被管理員限制登錄!"); } @ApiOperation("添加用戶") @PostMapping("/add") @ResponseBody Response add(@RequestBody @Valid UserDTO userDTO){ String resultStr = adminUserService.add(userDTO); if(resultStr.equals("SUCCESS")){ return renderSuccess(resultStr); }else{ return renderError(resultStr); } } }

    划重点!!!!!!划重点!!!!!!划重点!!!!!!

    Processed: 0.009, SQL: 9