springboot的restful接口成功失败返回值设计

  • springboot的restful接口最终返回值ResponseEntity
  • ResponseEntity赋值
  • 接口返回值设计

springboot的restful接口最终返回值ResponseEntity

springboot的restful接口最终的返回值都是ResponseEntity,调用者关心的是状态码和结果.ResponseEntity继承自HttpEntity,继承了body也就是结果,新加属性status也就是状态码.

ResponseEntity赋值

  • status默认200.
  • 接口返回值会被封装到body中

接口返回值设计

所有返回状态码都是200,接口返回值定义成一个统一的对象三个属性code,message,data。接口调用成功有用信息code和data(如果需要返回值);接口调用失败有用信息code和message.

  • code:业务码定义业务操作的结果
  • message:错误信息
  • data:成功的返回值
/*** 返回值对象*/
public class Result {/*** 响应码*/private String code;/*** 错误消息*/private String message;/*** 数据*/private Object data;public Result setCode(String code) {this.code = code;return this;}public Result setMessage(String message) {this.message = message;return this;}public Result setData(Object data) {this.data = data;return this;}private static final String UNKNOWN_ERROR_MESSAGE = "unknown error";/*** 成功无返回值* @return Result*/public static Result ok() {return new Result().setCode(ResultCodeConstant.SUCCESS);}/*** 成功有返回值* @return Result*/public static Result ok(Object data) {return new Result().setCode(ResultCodeConstant.SUCCESS).setData(data);}/*** 属性校验失败,错误信息message* @return Result*/public static Result bad(String message) {return new Result().setCode(ResultCodeConstant.FIELD_ILLEGAL).setMessage(message);}/*** SQL异常,异常信息message* @return Result*/public static Result error(String message) {return new Result().setCode(ResultCodeConstant.SQL_FAILURE).setMessage(message);}/*** 通用:自定义状态码,说明,返回值* @return Result*/public static Result build(String code, String message, Object data) {return new Result().setCode(code).setMessage(message).setData(data);}
}
/*** 业务响应码*/
public class ResultCodeConstant {/** 成功 */public static final String SUCCESS = "0000";/** 参数不合法 */public static final String FIELD_ILLEGAL = "1000";/** sql执行失败 */public static final String SQL_FAILURE = "2000";
}import org.springframework.web.bind.annotation.*;
/*** 接口*/
@RestController
@RequestMapping("/demo")
public class DemoController{@DeleteMapping@Overridepublic Result deleteBatchIds(@RequestParam List<Long> ids) {if (ids == null && ids.size == 0) {logger.error("ids is required.");return Result.bad("ids is required.");}//TODO 处理idsreturn Result.ok();//return Result.error("message");}
}

springboot的restful接口成功失败返回值设计相关推荐

  1. Restful Api 写法——统一返回值

    记录Restful Api 自定义统一返回值方式! 以下为示例代码: Code码Java类 package *.*.*;import java.util.ArrayList; import java. ...

  2. c#分页_使用Kotlin搭配Springboot开发RESTFul接口(二)自定义配置、跨域、分页

    前言 上一篇文章请看这里:使用Kotlin搭配Springboot开发RESTFul接口与服务部署 上一篇文章介绍了Kotlin搭配Springboot的开发流程,从搭建项目.ORM.Controll ...

  3. python获取接口返回值_Python+request 登录接口reponse的返回值token跨py文件的传递《二》...

    主要使用场景: 一般我们在进行接口测试时,依赖登录接口后reponse中的某些返回值,因此需要将login接口单独写一个py文件,另外的py文件均可调用login的reponse返回值使用.共用登录接 ...

  4. [Day14]Eclipse高级、类与接口作为参数返回值

    l  不同修饰符的使用   类,最常使用public修饰   成员变量,最常使用private修饰   成员方法,最常使用public修饰 l  自定义数据类型的使用   类作为方法参数时,说明要向方 ...

  5. SSM8==纯注解SSM项目:实现单表CRUD、事务、自定义异常和统一异常处理、RESTFUL风格接口、统一返回值格式(状态码、内容、消息)、JSON传参、axios、vue.js、elementUI

    环境:IDEA2021+JDK8+MAVEN3.8+TOMCAT7插件 前端:axios.vue.js.elementUI 后端:见POM.XML相关依赖,主要有数据库MySQL5.7 ,数据源Dru ...

  6. SpringBoot按照restful风格统一异常返回

    小白一枚,最近使用restful风格给前端返回数据,但有时候后台出异常了,返回的内容不是封装好的返回结果.导致前端渲染过程中出现连锁问题.搞得人头疼,而且看网上的很多人也比较繁琐,不清爽.既然自己解决 ...

  7. springboot 的异步任务 :无返回值 和有返回值

    在想要异步执行的方法上加上@Async注解,在controller上加上@EnableAsync,即可. 注:这里的异步方法,只能在本类之外调用,在本类调用是无效的. 无返回值的异步任务 servic ...

  8. java compareto 返回值_Java comparable接口及compareTo返回值所决定的升序降序问题

    我们在学习java基础的时候知道,基本数据类型数组可以直接调动Arrays类的静态sort方法,然后输出. 例如: int iArr[] = {1,2,4,6};  Arrays.sort(iArr) ...

  9. 抽象类、接口作为方法返回值和参数

    1.抽象类作为方法的参数 抽象类作为方法参数传递时,需要传入一个实现抽象类所有抽象方法的子类对象. 2.抽象类作为方法的返回值 抽象类作为方法的返回值时,需要返回一个实现了抽象类所有抽象方法的子类对象 ...

  10. 企业信息化,电商商品详情API接口,数据返回值说明,商品详情,关键词搜索,价格监控,卖家买家订单等相关数据

    都在说API,API到底是什么? 对于很多非IT人士而言,API ≈ 听不懂. 其实日常生活中,我们有很多类似API的场景,比如: 电脑需要调用手机里面的信息,这时候你会拿一根数据线将电脑手机连接起来 ...

最新文章

  1. 成功解决利用matplotlib.pyplot进行绘图的时候整个画布中的绘制曲线只显示一部分
  2. [eBook] SQL 2008
  3. 入门训练 Fibonacci数列
  4. rn 跳转至html5,ReactNative-从RN端跳转到原生界面
  5. 用计算机表白的数字,用数字表白
  6. OpenCV辅助对象(help objects)(5)_DataType
  7. Kafka Consumer端的一些解惑
  8. 时间预定java,在预定的时间运行任务java,apache
  9. CESM笔记——CAM和CAM-Chem学习资料推荐
  10. Ubuntu16.04 安装火狐浏览器(中国版)
  11. 电子电路设计中的脉冲电路详解
  12. ISA-95/B2MML教程 : 从用例到XML消息的整合实践
  13. 计算机组策略定时开机脚本,批处理+组策略 实现规定时间段无法开机and定时关机...
  14. POJ 1877 Flooded! G++
  15. 随心测试_Python Se_005鼠标悬停操作
  16. C++代码秀(你干嘛!!!哎呦!!!)
  17. android常用控件实验报告,ui设计实验报告.doc
  18. AMD中国的精神-郭可尊
  19. 关于WIN10开机无法输入密码的问题
  20. Goland导入github包

热门文章

  1. 【UOJ #351】新年的叶子(树的直径,期望)
  2. 垃圾收集(GC)中如何确定哪些内存是垃圾
  3. Linux运维六:用户管理及用户权限设置
  4. UVA - 10534
  5. div+css 定位浅析
  6. SQL Server 2012大数据导入Oracle的解决方案
  7. Spring 中的事务处理
  8. 计算机网络数据链路层之扩展以太网(含以太网交换机及虚拟局域网)
  9. Security+ 学习笔记13 加密基础
  10. 华为QoS中CBQ队列详解