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);
    
    }

}

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐