【平台开发】— 7.重构-增加结果统一处理
2021/4/23 18:25:31
本文主要是介绍【平台开发】— 7.重构-增加结果统一处理,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
前面实现了一个简单的登录,接下来开发的是项目管理功能。
但是在写完项目列表接口后,发现了重复代码的情况,这时候就需要重构下代码了。
一、代码冗余
首先看下之前写的UserController
和新写的ProjectController
中的2个方法:
1. UserController
@PostMapping("/login") public Maplogin(@RequestBody UserRequest user) throws Exception { String username = user.getUsername(); String password = user.getPassword(); Mapresult = new HashMap<>(); MapuserToken = new HashMap<>(); Mapmsg = new HashMap<>(); if (userService.isUserExist(username, password)) { userToken.put("token","admin-token"); result.put("code", 20000); result.put("data", userToken); } else { msg.put("msg", "用户或密码错误"); result.put("code", 50000); result.put("data", msg); } return result; }
2. ProjectController
@GetMapping("/getProjectList") public MapprojectList() throws Exception { ListprojectList = projectService.getProjectList(); Mapresult = new HashMap<>(); result.put("code", 20000); result.put("data", projectList); return result; }
问题就是我在对于返回结果的处理上,每次都要设置code,data这样的值,后面还有其他类似的方法,如果都要写一次那也太不科学了。
二、增加Result类
其实我们做接口测试也都知道,通常接口返回的信息都是这样居多:
{ "code": 20000, "message": "", "data": { "token": "admin-token" } }
那我就以这个为目的,去将返回结果抽象出来。
创建一个Result类去统一处理可能出现的一些返回形式,类里提供了多个构造方法,可以根据不同需求进行传参。
package com.mock.platform.common; public class Result { private static int SUCCESS_CODE = 20000; private static int FAIL_CODE = 30000; private int code; private String message; private Object data; private Result(int code, String message, Object data) { this.code = code; this.message = message; this.data = data; } public static Result success() { return new Result(SUCCESS_CODE,null,null); } public static Result success(Object data) { return new Result(SUCCESS_CODE,"",data); } public static Result fail(String message) { return new Result(FAIL_CODE,message,null); } public int getCode() { return code; } public void setCode(int 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; } }
三、重构
那Result
已经准备好了,现在可以重构login
方法了(注释部分是老代码):
// @PostMapping("/login") // public Maplogin(@RequestBody UserRequest user) throws Exception { // String username = user.getUsername(); // String password = user.getPassword(); // Mapresult = new HashMap<>(); // MapuserToken = new HashMap<>(); // Mapmsg = new HashMap<>(); // if (userService.isUserExist(username, password)) { // userToken.put("token","admin-token"); // result.put("code", 20000); // result.put("data", userToken); // } else { // msg.put("msg", "用户或密码错误"); // result.put("code", 50000); // result.put("data", msg); // } // return result; // } @PostMapping("/login") public Result login(@RequestBody UserRequest user) throws Exception { String username = user.getUsername(); String password = user.getPassword(); MapuserToken = new HashMap<>(); if (userService.isUserExist(username, password)) { userToken.put("token","admin-token"); return Result.success(userToken); } else { return Result.fail("用户名或密码错误"); } }
请求下接口,验证一下。
用户名密码都正确的情况:
密码不对的情况:
完成,可以探索下一个坑了。
这篇关于【平台开发】— 7.重构-增加结果统一处理的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-06-05做软件测试需要懂代码吗?
- 2024-06-0514-ShardingSphere的分布式主键实现
- 2024-06-03为什么以及如何要进行架构设计权衡?
- 2024-05-31全网首发第二弹!软考2024年5月《软件设计师》真题+解析+答案!(11-20题)
- 2024-05-31全网首发!软考2024年5月《软件设计师》真题+解析+答案!(21-30题)
- 2024-05-30【Java】百万数据excel导出功能如何实现
- 2024-05-30我们小公司,哪像华为一样,用得上IPD(集成产品开发)?
- 2024-05-30java excel上传--poi
- 2024-05-30安装笔记本应用商店的pycharm,再安排pandas等模块,说是没有打包工具?
- 2024-05-29java11新特性