Java API设计 - RESTful之统一返回格式
时间:2022-07-22
本文章向大家介绍Java API设计 - RESTful之统一返回格式,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
RESTful 是目前最流行的 API 设计规范,用于 Web 数据接口的设计。它的大原则容易把握,但是细节不容易做对。本文总结 RESTful 的设计细节,介绍如何设计出易于理解和使用的 API。
场景
API 统一返回参数 对于实际开发很重要
- 可规范API接口格式
- 便于统一调取或做封装
- 对于第三方调用很友好
- 也是最重要的一点(不会被第三方调用者评论,你这API设计的真”辣鸡“,简直没法看!)
分析
继承与
HashMap
,所以返回统一返回参数本身也就是一个Map,并且实现 于Serializable
可反序列化。本身即是一个Map对象,可已Json格式推送给调用者,如果想到传参,直接put
即可!
代码
package com.parker.api.common.result;
import com.fasterxml.jackson.annotation.JsonIgnore;
import org.springframework.http.HttpStatus;
import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;
/**
* 统一返回参数
*
* @date 2020年5月15日10:40:54
* @author Parker
*
*/
public class Result extends HashMap<String,Object> implements Serializable {
public Result(){
this.put("success", true);
this.put("code", HttpStatus.OK.value());
this.put("msg", "操作成功");
}
public String getMsg() {
return (String)this.get("msg");
}
public void setMsg(String msg) {//向json中添加属性,在js中访问,请调用data.msg
this.put("msg", msg);
}
public boolean isSuccess() {
return (boolean)this.get("success");
}
public void setSuccess(boolean success) {
this.put("success", success);
}
@JsonIgnore//返回对象时忽略此属性
public String getJsonStr() {//返回json字符串数组,将访问msg和key的方式统一化,都使用data.key的方式直接访问。
String json = JsonMapper.getInstance().toJson(this);
return json;
}
@JsonIgnore//返回对象时忽略此属性
public static Result success(String msg) {
Result j = new Result();
j.setMsg(msg);
return j;
}
@JsonIgnore//返回对象时忽略此属性
public static Result error(String msg) {
Result j = new Result();
j.setSuccess(false);
j.setMsg(msg);
return j;
}
public static Result success(Map<String, Object> map) {
Result restResponse = new Result();
restResponse.putAll(map);
return restResponse;
}
public static Result success() {
return new Result();
}
@Override
public Result put(String key, Object value) {
super.put(key, value);
return this;
}
public Result putMap(Map m) {
super.putAll(m);
return this;
}
public int getCode() {
return (int)this.get("code");
}
public void setCode(int code) {
this.put("code", code);
}
}
- 完全掌握Android Data Binding
- eclipse+webservice开发实例
- tomcat 用AXIS2发布WebService 网站的方法
- JSP 中EL表达式用法详解
- CSS判断不同分辨率显示不同宽度布局CSS3技术支持IE6到IE8
- Hibernate详细教程
- TensorFlow中的多线程
- nginx 域名绑定 域名, nginx 域名绑定 端口
- Centos下Yum安装PHP5.5,5.6,7.0
- 请注意,我们要谈谈神经网络的注意机制和使用方法
- Configure Apache Virtual Hosts - CentOS 7
- centos7查看端口命令
- 为什么算法容易忘记之快速排序
- 为什么算法容易忘记之插入排序
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释