前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java API设计 - RESTful之统一返回格式

Java API设计 - RESTful之统一返回格式

作者头像
Parker
发布2020-07-21 14:45:20
1.7K0
发布2020-07-21 14:45:20
举报
文章被收录于专栏:在码圈在码圈

RESTful 是目前最流行的 API 设计规范,用于 Web 数据接口的设计。它的大原则容易把握,但是细节不容易做对。本文总结 RESTful 的设计细节,介绍如何设计出易于理解和使用的 API。

场景

API 统一返回参数 对于实际开发很重要

  1. 可规范API接口格式
  2. 便于统一调取或做封装
  3. 对于第三方调用很友好
  4. 也是最重要的一点(不会被第三方调用者评论,你这API设计的真”辣鸡“,简直没法看!)

分析

继承与HashMap,所以返回统一返回参数本身也就是一个Map,并且实现 于Serializable可反序列化。本身即是一个Map对象,可已Json格式推送给调用者,如果想到传参,直接put即可!

代码

代码语言:javascript
复制
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);
	}

}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-06-08 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 场景
  • 分析
  • 代码
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档