功能实现——统一返回格式(ResponseBodyAdvice)

功能实现——统一返回格式(ResponseBodyAdvice)

2023年6月25日发(作者:)

功能实现——统⼀返回格式(ResponseBodyAdvice)ResponseBodyAdvice 返回处理基础学习:–

– 参考⽂档:-----

-----

源代码:–

–⽬录结构说明请转⾄Entity层在entity⽬录下创建 和 ⽂件ckage ;public enum configResultCode {

/*

成功状态码 */ SUCCESS(0, "成功"), /*

系统500错误*/ SYSTEM_ERROR(10000, "系统异常,请稍后重试"), UNAUTHORIZED(10401, "签名验证失败"), /*

参数错误:10001-19999 */ PARAM_IS_INVALID(10001, "参数⽆效"), /*

⽤户错误:20001-29999*/ USER_HAS_EXISTED(20001, "⽤户名已存在"), USER_NOT_FIND(20002, "⽤户名不存在");

private Integer code; private String message; configResultCode(Integer code, String message) { = code; e = message; } public Integer code() { return ; } public String message() { return e; }}ckage

import

import

import

import

;AllArgsConstructor;Data;NoArgsConstructor;Serializable;@Data@NoArgsConstructor@AllArgsConstructorpublic class configResult implements Serializable { /** * statu状态值:代表本次请求response的状态结果。 */ private Integer code; /** * response描述:对本次状态码的描述。 */ private String msg; /** * data数据:本次返回的数据。 */ private T data; /** * count数据:本次返回的数据数量 */ private Integer count; /** *

成功,创建ResResult:没data数据 */ public static configResult createSuccess() { configResult result = new configResult(); ultCode(S); return result; } /** *

成功,创建ResResult:有data数据 */ public static configResult createSuccess(Object data) { configResult result = new configResult(); ultCode(S); a(data); return result; } /** *

成功,创建ResResult:有data数据,有页⾯数量展⽰ */ public static configResult createSuccess(Object data,Integer count) { configResult result = new configResult(); ultCode(S); a(data); nt(count); return result; } /** *

失败,指定code,msg */ public static configResult createFail(Integer code, String msg) { configResult result = new configResult(); e(code); (msg); (msg); return result; } /** *

失败,指定configResultCode枚举 */ public static configResult createFail(configResultCode resultCode) { configResult result = new configResult(); ultCode(resultCode); return result; } /** *

把configResultCode枚举转换为ResResult */ private void setResultCode(configResultCode code) { = (); = e(); }}Utils层在utils⽬录下创建⽂件package ;import

import

import

import

import

import

import

import

import JSONUtil;;MethodParameter;MediaType;HttpMessageConverter;ServerHttpRequest;ServerHttpResponse;ControllerAdvice;ResponseBodyAdvice;@ControllerAdvice(basePackages = "ller")public class responseHandler implements ResponseBodyAdvice { /** * *

处理response的具体业务⽅法 */ @Override public Object beforeBodyWrite(Object arg0, MethodParameter arg1, MediaType arg2, Class> arg3, ServerHttpRequest arg4, ServerHttpResponse arg5) { // TODO Auto-generated method stub //

获取返回数据类型 String returnType = ameterType().getSimpleName(); //

根据返回数据类型作相应处理 switch (returnType) { case "void": return Success(); case "Result": return (configResult) arg0; case "String": //需要做转换,否则报错 return Str(Success(arg0)); case "JSONObject": return Success(bj(arg0).getObj("body"), bj(arg0).size(), bj(arg0).isNull("col") ? null : bj(arg0).isNull("col")); default: return Str(Success(arg0)); } } /** *

是否⽀持advice功能 treu=⽀持,false=不⽀持 */ @Override public boolean supports(MethodParameter arg0, Class> arg1) { // TODO Auto-generated method stub //

默认开启,后续遇到需求再进⾏判断 return true; }}Controller层修改controller⽬录下的⽂件package ;package

import

import

import

import

import

import

import

import

import

import

import

import

import

import

import

import

import

import

import

import

import

Db;Entity;DSFactory;MetaUtil;Table;JSONArray;SQLException;List;;;Autowired;GetMapping;PostMapping;RequestBody;RequestMapping;RequestParam;RestController;IterUtil;JSONException;JSONObject;JSONUtil;Setting;@RequestMapping("/dbManager")@RestControllerpublic class dbManagerController { @Autowired dbManagerService dManagerService; /** *

获取当前库的所有表名 * API测试URL:localhost:8080/dbManager/getAllTablesName?groupname=mssql *

* @return jsonObject { "code": 0, "msg": "", "count": 1000, "data": [{}, {}] } */ @GetMapping("/getAllTablesName") public JSONObject getAllTablesName(@RequestParam("groupname") String groupname){ return Obj().putOnce("list", TablesName(groupname)); } /** *

获取表结构 * API测试URL:localhost:8080/dbManager/getTableStructure/?tablename=sarticle&groupname=mssql *

* @param tablename

对应数据库的表名 * @return */ @GetMapping("/getTableStructure") public JSONObject getTableStructure(@RequestParam("tablename") String tablename, @RequestParam("groupname") String groupname) { return Obj().putOnce("list",leStructure(groupname, tablename)); } /** *

插⼊数据 API测试URL:localhost:8080/dbManager/addData *

* @param request

传⼊数据:JSON

格式: { "#groupname":"数据库对应组名", * "groupname":"{{groupname}}", "#table":"对应数据库的表名", "tablename" * : "{{tablename}}", * "#data":"需要插⼊的数据,例如:{id:1,title:你好},data能为空", "data":{{data}} * } * @return */ @PostMapping("/addData") @PostMapping("/addData") public String addData(@RequestBody JSONObject request) { Entity data = (("tablename")).parseBean(("data")); return a(("groupname"), data)?"success":"false"; } /** *

插⼊数据并返回⾃增主键 API测试URL:localhost:8080/dbManager/addDataForGeneratedKey *

* @param request

传⼊数据:JSON

格式: { "#groupname":"数据库对应组名", * "groupname":"{{groupname}}", "#table":"对应数据库的表名", "tablename" * : "{{tablename}}", * "#data":"需要插⼊的数据,例如:{id:1,title:你好},data能为空", "data":{{data}} * } * @return */ @PostMapping("/addDataForGeneratedKey") public Long addDataForGeneratedKey(@RequestBody JSONObject request) { Entity data = (("tablename")).parseBean(("data")); return aForGeneratedKey(("groupname"), data); } /** *

删除数据 API测试URL:localhost:8080/dbManager/delData *

* @param request

传⼊数据:JSON

格式: { "#groupname":"数据库对应组名", * "groupname":"{{groupname}}", "#table":"需要修改的数据库表名", * "tablename" : "{{tablename}}", * "#where":"限制条件,例如:{id:1},where不能为空", "where":{{where}} } * @return */ @PostMapping("/delData") public String delData(@RequestBody JSONObject request) { Entity where = (("tablename")).parseBean(("where")); return a(("groupname"), where)?"success":"false"; } /** *

更新数据 API测试URL:localhost:8080/dbManager/updateData *

* @param request

传⼊数据:JSON

格式: { "#groupname":"数据库对应组名", * "groupname":"{{groupname}}", "#table":"对应数据库的表名", "tablename" * : "{{tablename}}", * "#data":"需要插⼊的数据,例如:{id:1,title:你好},data不能为空", * "data":{{data}}, "#where":"限制条件,例如:{id:1},where不能为空", * "where":{{where}} } * @return */ @PostMapping("/updateData") public String updateData(@RequestBody JSONObject request) { Entity data = (("tablename")).parseBean(("data")); Entity where = (("tablename")).parseBean(("where")); return Data(("groupname"), data, where)?"success":"false"; } /** *

查询表全部数据 * API测试URL:localhost:8080/dbManager/findTableAllList?tablename=sarticle&groupname=mssql *

* @param tablename

对应数据库的表名 * @return */ @GetMapping("/findTableAllList") public JSONObject findAllList(@RequestParam("tablename") String tablename, @RequestParam("groupname") String groupname) { List lis = lList(groupname, tablename); JSONArray cols = Array(); for (String str : st(or()).getFieldNames()) { (Obj().putOnce("field", str).putOnce("title", str)); } } JSONObject jsonObject = Obj().putOnce("cols", cols).putOnce("list", lis); return jsonObject; } /** *

按条件进⾏查询,含模糊查询 API测试URL:localhost:8080/dbManager/findTableAllList *

* @param request

传⼊数据:JSON

格式: { "#groupname":"数据库对应组名", * "groupname":"{{groupname}}", "#table":"需要修改的数据库表名", * "tablename" : "{{tablename}}", * "#where":"限制条件,例如:{id:1},where不能为空", "where":{{where}} } * @return */ @PostMapping("/findTableAllList") public JSONObject findAllList(@RequestBody JSONObject request) { Entity where = (("tablename")).parseBean(("where")); return Obj().putOnce("list", lList(("groupname"), where)); } /** *

模糊查询 * API测试URL:localhost:8080/dbManager/findTableLikeList?tablename=sarticle&field=id&value=1&groupname=mssql *

* @param tablename

对应数据库的表名 * @param field

字段名 * @param value

对应值 * @return */ @GetMapping("/findTableLikeList") public JSONObject findLikeList(@RequestParam("tablename") String tablename, @RequestParam("field") String field, @RequestParam("value") String value, @RequestParam("groupname") String groupname) { return Obj().putOnce("data", keList(groupname, tablename, field, value)); } /** *

分页查询 API测试URL:localhost:8080/dbManager/getPage *

* @param request

传⼊数据:JSON

格式: { "#groupname":"数据库对应组名", * "groupname":"{{groupname}}", "#table":"需要修改的数据库表名", * "tablename" : "{{tablename}}", * "#where":"限制条件,例如:{id:1},where不能为空", "where":{{where}}, * "#pages":"页码", "pages":{{pages}}, "#pageSize":"每页数量", * "pageSize":{{pagesize}} } * @return */ @PostMapping("/getPage") public JSONObject getPage(@RequestBody JSONObject request) { Entity where = (("tablename")).parseBean(("where")); List lis = e(("groupname"), where, ("pages"), ("pageSize")); st(or()).getFieldNames(); JSONObject jsonObject = Obj().putOnce("code", 0).putOnce("cols", "value") .putOnce("count", ()).putOnce("data", lis); return jsonObject; } /** *

⾃定义查询语句 API测试URL:localhost:8080/dbManager/customerRSqL *

* @param request

传⼊数据:JSON

格式: { "#groupname":"数据库对应组名", * "groupname":"{{groupname}}", "#sql": "⾃定义sql语句", "sql": * "{{selectSQL}}" } * @return */ @PostMapping("/customerRSqL") public JSONObject customerRSqL(@RequestBody JSONObject request) { return Obj().putOnce("list", erRSqL(("groupname"), ("sql"))); } /** /** *

⾃定义查询语句 API测试URL:localhost:8080/dbManager/customerCUDSql *

* @param request

传⼊数据:JSON

格式: { "#groupname":"数据库对应组名", * "groupname":"{{groupname}}", "#sql": "⾃定义sql语句", "sql": * "{{selectSQL}}" } * @return */ @PostMapping("/customerCUDSql") public String customerCUDSql(@RequestBody JSONObject request) { return erCUDSql(("groupname"), ("sql"))?"success":"false"; }}测试数据1. 按dbManagerController 测试URL进⾏测试2. ⾃⾏下载源代码,获取postmanData配置⽂件导⼊到postman进⾏测试PS:因为两个数据库的字段不⼀样,所以将变量数据分成两个分⽀,可⾃⾏获取相应的分⽀进⾏测试

发布者:admin,转转请注明出处:http://www.yc00.com/news/1687679199a30921.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信