关于接口的设计

世界上并没有完美的程序,但是我们并不因此而沮丧,因为写程序就是一个不断追求完美的过程。

接口设计中一些固定的字段是很重要的,但是在我们平时开发中却又最容易忽略,请记住,并不是功能实现了,接口通了,就万事大吉了,作为一个软件架构者,更多的应该考虑的是程序的可维护性、可修改性、可扩展性及安全性,最重要的就是与外界系统的可交互性,所以传值时的一些固定字段就比较重要了,以下是我的总结以及自己实现的通用返回类,希望对大家有所帮助:

必须包含的字段:
    状态:status
    状态码:statusCode
    信息:message
    
    版本号:version
    时间戳:curTime
    编码方式:encode
   加解密方式:encrypt
   唯一ID:UUID

结果示例:

{
    "header": {
        "encode": "UTF-8",
        "curTime": 1606384337747,
        "encrypt": null,
        "UUID": "9a2e86f71ff2417ca638273516f743d8",
        "message": "ok",
        "version": "1",
        "status": "OK",
        "statusCode": 0
    },
    "body": {
       “name”; "result"
    }
}

返回类:

@Data
public class Result {

    /**
     * 状态
     */
    public static final String STATUS = "status";
    /**
     * 状态码
     */
    public static final String STATUS_CODE = "statusCode";
    /**
     * 信息
     */
    public static final String MESSAGE = "message";

    /**
     * 版本
     */
    public static final String VERSION = "version";
    /**
     * 时间戳
     */
    public static final String CUR_TIME = "curTime";
    /**
     * 编码方式
     */
    public static final String ENCODE = "encode";
    /**
     * 加密方式
     */
    public static final String ENCRYPT = "encrypt";
    /**
     * UUID
     */
    public static final String UUID = "UUID";

    private static final int COMMON_LENGTH = 16;
    private static final String OK = "ok";

    private static final String UTF_8 = "UTF-8";
    private static String version = "1";

    private final Map<String, Object> header;
    private final Map<String, Object> body;

    private Result () {
        header = new HashMap<>(COMMON_LENGTH);
        body = new HashMap<>(COMMON_LENGTH);

        header.put(CUR_TIME, System.currentTimeMillis());
        header.put(VERSION, version);
        header.put(ENCODE, UTF_8);
        header.put(ENCRYPT, null);
        header.put(UUID, UUIDUtils.getUUID32());
    }

    public static Result newInstance () {
        return new Result();
    }

    public Result ok () {
        header.put(STATUS, Status.OK);
        header.put(STATUS_CODE, Status.OK.getCode());
        header.put(MESSAGE, OK);
        return this;
    }

    public Result add (String key, Object value) {
        body.put(key, value);
        return this;
    }

    public Result error (Object value) {
        header.put(STATUS, Status.ERROR);
        header.put(STATUS_CODE, Status.ERROR.getCode());
        header.put(MESSAGE, value);
        return this;
    }

    public enum Status {
        /**
         * OK - 成功,ERROR - 失败
         */
        OK(0), ERROR(1);

        private int code;
        Status (int code) {
            this.code = code;
        }

        public int getCode() {
            return code;
        }
    }

    public Object getHeader (String key) {
        return header.get(key);
    }

    public Object getBody (String key) {
        return body.get(key);
    }
}

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

这是谁的博客?

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值