设计一个方便前后端分离项目开发的接口管理工具

接口文档是前后端开发的契约

现在的随着js和js的相关前端框架,越来越强大网站,软件系统,越来越使用前后端分离的方式进行开发。前端和后端被分离为了两个不同的工种。

传统的API 文档虽然满足了阅读者对接接口的需求,但是通常需要等待后端开发完成才能调用接口,从而真正开始接口调试工作。

如果要让两个工种同时并发的进行开发,就需要前端后端达成接口的约定,也就是接口文档。如果我们提前编写出接口文档,用接口文档就可以分别对前后端进行服务,通过接口文档分隔前后端,那么前后端就可以按照这个接口文档的约定进行开发,开发效率就会大大提升,同时在开发过程中保留了宝贵的接口文档。

我想做的是这个接口文档的工具需要满足以下几个特性:

  1. 可以作为前后端的接口文档
  2. 后端还未开发,工具就可以为前端开发提供api接口
  3. 可以使用这个工具进行前后端测试
  4. 写的时候规则足够简单,写一个接口写起来很快

最早曾使用过阿里的rap, 后面又同事介绍了yapi和json-server,到公司一直在用的postman,都不能完美的达到我想要的效果,所以自己用业余时间来设计造一个轮子吧。

像写接口一样写接口文档

{
    "name":"用户操作",
    "desc":"",
    "api":
    [{
        "name":"用户登录",
        "desc":"",
        "request":{
            "method": "POST",
            "authorization":true,
            "url":"/login/",
            "body":{
                "mode":"json",
                "data":{
                    "username":{"name":"用户名", "desc":"", "type":"string", "max_length":30, "error_messages":{
                        "code":-1,
                        "max_length":"length must less than 30", 
                        "required":"username name is required"}},
                    "password":{"name":"用户登录密码", "desc":"", "type":"string", "max_length":30, "min_length":3}
                }
            }
        },
        "response":{
            "code":{"name":"返回结果的代码", "type":"int", "desc":"登录成功只返回1"},
            "msg":{"name":"登录成功返回消息", "type":"string", "desc":"通常返回都是空"},
            "token":{"name":"登录成功返回的用户token", "type":"string", "length":"43"}
        },
        "test_data":[
            {
                "request":{"username":"edison", "password":"123"},
                "response":{"code":-1, "msg":"密码输入不正确"}
            },
            {
                "request":{"username":"lily", "password":"123"},
                "response":{"code":-2, "msg":"用户名不存在"}
            },
            {
                "request":{"username":"root", "password":"123"},
                "response":{"code":1, "msg":"登录成功", "token":"fjdlkfjlafjdlaj3jk2l4j"}
            },
            {
                "request":{"username":"lily"},
                "response":{"code":-1, "msg":"密码是必填的"}
            },
            {
                "request":{"password":"123"},
                "response":{"code":-1, "msg":"用户名是必填的"}
            }
        ]
    },
    {
        "name":"用户退出登录",
        "desc":"",
        "request":{
            "method":"GET",
            "url":"/logout/"
        },
        "response":{
            "code":{"name":"返回结果的代码", "type":"int", "desc":"退出成功只返回1"},
            "msg":{"name":"退出操作返回消息", "type":"string", "desc":"通常返回都是空"}
        },
        "test_data":[
            {
                "request":null,
                "response":{"code":1, "msg":"退出成功"}
            }
        ]
    }
]}

那用Rust来写吧,编译为Mac、Windows、Linux的直接可运行文件,用户无需再安装任何环境

2020-01-04 08:09

留言