项目设置统一返回结果对象

news2024/10/5 20:24:16
一、统一返回数据格式
项目中我们会将响应封装成json返回,一般我们会将所有接口的数据格式统一, 使前端(iOS,Android, Web)对数据的操作更一致、轻松。
一般情况下,统一返回数据格式没有固定的格式,只要能描述清楚返回的数据状态以及要返回的具体数据就可以。但是一般会包含状态码、返回消息、数据这几部分内容
例如,我们的系统要求返回的基本数据格式如下:
列表:
1 {
2 "success" : true ,
3 "code" : 20000 ,
4 "message" : " 成功 " ,
5 "data" : {
6 "items" : [
7 {
8 "id" : "1" ,
9 "name" : " 刘德华 " ,
10 "intro" : " 毕业于师范大学数学系,热爱教育事业,执教数学思维 6 年有余 "
11 }
12 ]
13 }
14 }
分页:
1 {
2 "success" : true ,
3 "code" : 20000 ,
4 "message" : " 成功 " ,
5 "data" : {
6 "total" : 17 ,
7 "rows" : [
8 {
9 "id" : "1" ,
10 "name" : " 刘德华 " , 11 "intro" : " 毕业于师范大学数学系,热爱教育事业,执教数学思维 6 年有余 "
12 }
13 ]
14 }
15 }
没有返回数据:
1 {
2 "success" : true ,
3 "code" : 20000 ,
4 "message" : " 成功 " ,
5 "data" : {}
6 }
失败:
1 {
2 "success" : false ,
3 "code" : 20001 ,
4 "message" : " 失败 " ,
5 "data" : {}
6 }
因此,我们定义统一结果
1 {
2 "success" : 布尔 , // 响应是否成功
3 "code" : 数字 , // 响应码
4 "message" : 字符串 , // 返回消息
5 "data" : HashMap // 返回数据,放在键值对中
6 }
二、创建统一结果返回类
1、在common模块下创建子模块 common_utils
2、创建接口定义返回码
创建包com.atguigu.yygh.common,创建接口 ResultCode.java
1 public interface ResultCode {
2 public static Integer SUCCESS = 20000 ;
3
4 public static Integer ERROR = 20001 ;
5 }
4、创建结果类
创建类 R.java
1 @Data
2 public class R {
3 @ApiModelProperty (value = " 是否成功 " )
4 private Boolean success;
5
6 @ApiModelProperty (value = " 返回码 " )
7 private Integer code;
8
9 @ApiModelProperty (value = " 返回消息 " )
10 private String message;
11 12 @ApiModelProperty (value = " 返回数据 " )
13 private Map<String, Object> data = new HashMap<String, Object>();
14
15 private R(){}
16
17 public static R ok(){
18 R r = new R();
19 r.setSuccess( true );
20 r.setCode(ResultCode.SUCCESS);
21 r.setMessage( " 成功 " );
22 return r;
23 }
24
25 public static R error(){
26 R r = new R();
27 r.setSuccess( false );
28 r.setCode(ResultCode.ERROR);
29 r.setMessage( " 失败 " );
30 return r;
31 }
32
33 public R success(Boolean success){
34 this .setSuccess(success);
35 return this ;
36 }
37
38 public R message(String message){
39 this .setMessage(message);
40 return this ;
41 }
42
43 public R code(Integer code){
44 this .setCode(code);
45 return this ;
46 }
47
48 public R data(String key, Object value){
49 this .data.put(key, value);
50 return this ;
51 }
52
53 public R data(Map<String, Object> map){
54 this .setData(map); 55 return this ;
56 }
57 }
二、统一返回结果使用
1、在service模块中添加依赖
1 <dependency>
2 <groupId> com.atguigu </groupId>
3 <artifactId> common_utils </artifactId>
4 <version> 0.0.1-SNAPSHOT </version>
5 </dependency>
2、修改Controller中的返回结果
1 // 查询所有医院设置
2 @ApiOperation (value = " 医院设置列表 " )
3 @GetMapping ( "findAll" )
4 public R findAll () {
5 List<HospitalSet> list = hospitalSetService.list();
6 return R.ok().data( "list" ,list);
7 }
8
9 @ApiOperation (value = " 医院设置删除 " )
10 @DeleteMapping ( "{id}" )
11 public R removeById ( @ApiParam (name = "id" , value = " 讲师 ID" , required = true ) @PathVa
12 hospitalSetService.removeById(id);
13 return R.ok();
14 }

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/77864.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

十四、使用 Vue Router 开发单页应用(4)

本周概要 导航守卫 全局守卫路由独享的守卫组件内守卫导航解析流程 14.10 导航守卫 在 14.4 嵌套路由 小节中已经使用过一个组件内的导航守卫&#xff1a;beforeRouteUpdate 。Vue Router 提供的导航守卫主要用于在导航过程中重定向或取消路由&#xff0c;或添加权限验证、…

python基于用户画像和协同过滤实现电影推荐系统

1、概要 传统电影推荐系统大多使用协同过滤算法实现电影推荐&#xff0c;主要实现机理是通过用户评分及用户观影历史数据抽象为多维向量利用欧式距离或其他向量计算公式实现推荐&#xff0c;本文中将采用常用的机器学习算法Kmeans聚类算法协同过滤算法word2vec搜索推荐模型多模…

【猿如意】MySQL的下载、安装、使用,这一文足够了~

大家好&#xff0c;我是笑小枫&#xff0c;本篇文章为大家分享一个好用的工具-【猿如意】 对于这个工具呢&#xff0c;怎么说呢&#xff1f;简单点就是&#xff1a;不经意间回首&#xff0c;放眼望去&#xff0c;满眼是你~ 下面就已Mysql下载安装的过程来和大家一起体验下我们的…

【代码审计-.NET】基于.NET框架开发的代码审计

目录 一、审计方法 1、从黑盒到白盒 2、白盒审计 3、灰盒审计 二、审计过程 1、功能点追踪 2、功能函数 3、目录扫描 4、getshell 5、安全模块未引用 6、自动扫描工具 一、审计方法 1、从黑盒到白盒 --->从一个网站前端 --->查看其页面的源代码&#xff0c;并分…

【日常系列】LeetCode《20·数据结构设计》

数据规模->时间复杂度 <10^4 &#x1f62e;(n^2) <10^7:o(nlogn) <10^8:o(n) 10^8<:o(logn),o(1) 内容 lc 155 【剑指 30】【top100】&#xff1a;最小栈 https://leetcode.cn/problems/min-stack/ 提示&#xff1a; -2^31 < val < 2^31 - 1 pop、top 和…

快看梅西射门了,这是梅西的大力抽射~阿根廷加油,我们是冠军

&#x1f5b1; ⌨个人主页&#xff1a;Love And Program的个人主页 &#x1f496;&#x1f496;如果对你有帮助的话希望三连&#x1f4a8;&#x1f4a8;支持一下博主 来自梅西的大力抽射&#x1f970;致昨晚的梅西思路加入阿根廷元素加入足球元素源码致昨晚的梅西 昨晚上阿根廷…

springcloud 从头开始构建分布式微服务脚手架

必备服务&#xff08;Windows开发本机环境&#xff09; Java maven mysql&#xff1a;自启动服务&#xff0c;后台运行 127.0.0.1:3306 MySQL57 root/root Redis&#xff1a;手动运行&#xff0c;前台运行 127.0.0.1:6379 执行命令redis-server.exe redis.windows.conf na…

Weblogic漏洞 - 通杀方式

文章目录简介恶意文件把恶意文件部署到攻击机&#xff0c;并开启http服务写入文件写入反弹shell命令执行反弹shell命令拿到目标机器权限[linux] WebLogic Server 版本: 12.2.1.3简介 最早在 CVE-2019-2725 被提出&#xff0c;对于所有Weblogic版本均有效。 构造一个XML文件&…

CALC-python和shell对字符的解析差异

好久没看题了&#xff0c;记录一道感觉还挺有意思的题目 一进去题目界面非常简洁&#xff0c;一个计算器 这个简洁的界面&#xff0c;好像似曾相识&#xff0c;总感觉好像以前做题时遇到的ssti题目的界面&#xff0c;果断来一波ssti emem有WAF&#xff0c;尝试下绕过&#xff…

C++ 实现守护进程

文章目录1.守护进程概念1.什么是守护进程2.守护进程的特点3.如何查看linux系统中已存在的守护进程2.守护进程编写的步骤3.示例1.守护进程概念 1.什么是守护进程 Linux Deamon守护进程是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或者等待处理某些事…

系统小工具API接口,免费好用

1、前言 系统小工具接口&#xff0c;可生成长短不重复id&#xff0c;可获取服务器标准时间。 查看接口完整信息&#xff1a;https://www.idmayi.com/doc/detail?id23 2、接口明细 注意&#xff1a;app_id和app_secret是临时秘钥&#xff0c;如果真正使用&#xff0c;需要去 ht…

ArrayList源码解析

ArrayList源码解析 简介 ArrayList 是一种以数组实现的 List&#xff0c;与数组相比&#xff0c;它具有动态扩展的能力&#xff0c;因此也可称之为动态数组。 ArrayList 线程不安全&#xff0c;除该类未实现同步外&#xff0c;其余跟 Vector 大致相同。 Java 泛型只是编译器…

赛先生的新旅行:昇腾AI带来的科学智能变革

《三体》动画即将开播&#xff0c;又一次引发了全球科幻迷的无限热情。提到《三体》&#xff0c;大家有很多深刻记忆。其中之一是三体人在入侵地球之前&#xff0c;首先是派智子锁死地球的基础科学进步&#xff0c;从而限制人类的整体发展。很多人会担心&#xff0c;物理、化学…

LeetCode题解12 (146,97) LRU缓存<HashMap + 双向链表>,二叉树的中序遍历

文章目录LRU缓存(146)完整代码解答:二叉树的中序遍历(94)完整代码解答:LRU缓存(146) 从题上看存在Key和Value因此我们采用HashMap来进行存储,这里我们采用HashMap双向链表来实现,我们需要实现里面的get,put方法。 我们需要先创建1个链表节点 //先定义一个节点类 class ListNode…

一个合格的程序员也是一名合格的侦探---Debug篇

调试 文章目录调试1.什么是bug&#xff1f;1.1bug概念1.2bug的起源2.什么是调试&#xff0c;调试的重要性2.1调式的概念2.2 调试的基本步骤2.3Debug版本和Release版本2.3.1Debug版本2.3.2Release版本2.3.3区别2.3.4同一代码在Debug和Release下的差别3.Windows下visual stdio的调…

ioDraw - 免费的在线图表制作工具

介绍&#xff1a; ioDraw是一款数据可视化图表库&#xff0c;提供直观&#xff0c;生动&#xff0c;可交互&#xff0c;可个性化定制的数据可视化图表&#xff0c;支持折线图、柱状图、饼图、散点图等 地址&#xff1a;https://www.iodraw.com/chart 特点&#xff1a; 图表…

springboot实现License证书的授权和许可到期验证

前言 在客户服务器部署软件项目后&#xff0c;为了项目版权管控或者对项目进行授权收费处理的&#xff0c;就需要实现项目的授权和许可验证。 在这里讲解的是使用 license证书 的形式实现授权和许可验证&#xff08;已通过测试&#xff09;。 主要是通过 IP地址、MAC地址、CP…

PyTorch - 线性回归

文章目录普通实现准备数据反向传播构建模型 实现实例化模型、损失函数、优化器训练数据评估模型普通实现 准备数据 import torch import matplotlib.pyplot as plt # 1、准备数据 # y 2 * x 0.8 x torch.rand([500, 1]) y_true 2 * x 0.8 # 2、通过模型计算 y_predict …

MyBatis面试题(2022最新版)

整理好的MyBatis面试题库&#xff0c;史上最全的MyBatis面试题&#xff0c;MyBatis面试宝典&#xff0c;特此分享给大家 MyBatis简介 MyBatis是什么&#xff1f; MyBatis 是一款优秀的持久层框架&#xff0c;一个半 ORM&#xff08;对象关系映射&#xff09;框架&#xff0c;它…

Kotlin 开发Android app(二十一):协程launch

什么是协程&#xff0c;这可是这几年才有的概念&#xff0c;我们也不用管它是什么概念&#xff0c;先看看他能做什么。 创建协程 添加依赖&#xff1a; implementation org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.9implementation org.jetbrains.kotlinx:kotlinx-cor…