路漫漫其修远兮
吾将上下而求索

go学习:restful规范定义

经过几次接口编写,发下下面的规范比较合适,url和路径没有异议,定义为以下

返回形式有两种:
1、返回http状态码为实际的http_code,body中的code和http_code值相同。
code为200,msg为ok,具体查看data和count字段,data字段可以为list,也可以为dict。
当http_code和body中code为非200,具体错误见msg
当出现错误时:code是400-499中一个数字,代表不同的错误意思

[GIN-debug] GET    /api/v1/users/:user_id/tags              --> gin-blog/routers/api/v1.GetTags (3 handlers)   列出所有tag的列表
[GIN-debug] GET    /api/v1/users/:user_id/tags/:tag_id      --> gin-blog/routers/api/v1.GetTags (3 handlers)   列出单个tag详情
[GIN-debug] POST   /api/v1/users/:user_id/tags              --> gin-blog/routers/api/v1.AddTag (3 handlers)    创建单个tag对象
[GIN-debug] PUT    /api/v1/users/:user_id/tags/:tag_id      --> gin-blog/routers/api/v1.EditTag (3 handlers)   更新单个tag对象
[GIN-debug] DELETE /api/v1/users/:user_id/tags/:tag_id      --> gin-blog/routers/api/v1.DeleteTag (3 handlers) 删除单个tag对象


{
    "code":200,
    "data":[
        {
            "id":1,
            "created_on":0,
            "modified_on":0,
            "name":"andy",
            "created_by":"",
            "modified_by":"",
            "state":1
        },
        {
            "id":2,
            "created_on":0,
            "modified_on":0,
            "name":"bob",
            "created_by":"",
            "modified_by":"",
            "state":1
        }
    ],
    "count":16,
    "msg":"ok"
}

当创建成功,没有数据的时候,data为空对象
{
    "code":200,
    "data":{},
    "msg":"ok"
}
参数错误
{
    "code": 400,
    "msg": "invalid character '\"' after object key:value pair",
    "data": {}
}


2、body部分没有code字段。
http状态码返回200,msg为ok,具体查看data和count字段,data字段可以为list,也可以为dict。
http状态码返回非200,具体错误见msg

[GIN-debug] GET    /api/v1/users/:user_id/tags              --> gin-blog/routers/api/v1.GetTags (3 handlers)   列出所有tag的列表
[GIN-debug] GET    /api/v1/users/:user_id/tags/:tag_id      --> gin-blog/routers/api/v1.GetTags (3 handlers)   列出单个tag详情
[GIN-debug] POST   /api/v1/users/:user_id/tags              --> gin-blog/routers/api/v1.AddTag (3 handlers)    创建单个tag对象
[GIN-debug] PUT    /api/v1/users/:user_id/tags/:tag_id      --> gin-blog/routers/api/v1.EditTag (3 handlers)   更新单个tag对象
[GIN-debug] DELETE /api/v1/users/:user_id/tags/:tag_id      --> gin-blog/routers/api/v1.DeleteTag (3 handlers) 删除单个tag对象


{
    "data":[
        {
            "id":1,
            "created_on":0,
            "modified_on":0,
            "name":"andy",
            "created_by":"",
            "modified_by":"",
            "state":1
        },
        {
            "id":2,
            "created_on":0,
            "modified_on":0,
            "name":"bob",
            "created_by":"",
            "modified_by":"",
            "state":1
        }
    ],
    "count":16,
    "msg":"ok"
}

更倾向于使用第二种,简单明了,没有多余的东西


然后路径大小写使用下面的,路径使用中横线,参数使用大小写
ttps://oss.console.aliyun.com/ajax/bucket/file/list-objects.json?_cacheBusting=1578312956895&prefix=&marker=&maxKeys=100

参考:https://book.eddycjy.com/golang/gin/api-02.html

未经允许不得转载:江哥架构师笔记 » go学习:restful规范定义

分享到:更多 ()

评论 抢沙发

评论前必须登录!