美文网首页Api设计API
API接口开发笔记

API接口开发笔记

作者: passerbyli | 来源:发表于2017-02-20 08:53 被阅读53次

    请求模式

    • GET (选择):从服务器上获取一个具体的资源或者一个资源列表。
    • POST (创建): 在服务器上创建一个新的资源。
    • PUT(更新):以整体的方式更新服务器上的一个资源。
    • PATCH (更新):只更新服务器上一个资源的一个属性。
    • DELETE(删除):删除服务器上的一个资源。
    • HEAD : 获取一个资源的元数据,如数据的哈希值或最后的更新*时间。
    • OPTIONS:获取客户端能对资源做什么操作的信息。

    HTTP响应码

    在用户发出请求,服务端对请求进行响应时,给予正确的HTTP响应状态码,有利于让客户端正确区分遇到的情况。

    • 200 OK - [GET]:服务器成功返回用户请求的数据,该操作是幂等的(Idempotent)。
    • 201 CREATED - [POST/PUT/PATCH]:用户新建或修改数据成功。
    • 202 Accepted - [*]:表示一个请求已经进入后台排队(异步任务)
    • 204 NO CONTENT - [DELETE]:用户删除数据成功。
    • 400 INVALID REQUEST - [POST/PUT/PATCH]:用户发出的请求有错误,服务器没有进行新建或修改数据的操作,该操作是幂等的。
    • 401 Unauthorized - [*]:表示用户没有权限(令牌、用户名、密码错误)。
    • 403 Forbidden - [*] 表示用户得到授权(与401错误相对),但是访问是被禁止的。
    • 404 NOT FOUND - [*]:用户发出的请求针对的是不存在的记录,服务器没有进行操作,该操作是幂等的。
    • 406 Not Acceptable - [GET]:用户请求的格式不可得(比如用户请求JSON格式,但是只有XML格式)。
    • 410 Gone -[GET]:用户请求的资源被永久删除,且不会再得到的。
    • 422 Unprocesable entity - [POST/PUT/PATCH] 当创建一个对象时,发生一个验证错误。
    • 500 INTERNAL SERVER ERROR - [*]:服务器发生错误,用户将无法判断发出的请求是否成功。

    返回值结构

    首先,字段的合理返回,数据的包裹。因为返回值中,我们常常要对数据进行区分分组,或者按照从属关系打包,所以,我们再返回时,最好有包裹的思想,把数据存放在不同的包裹中进行返回。

    {
      'error_code' : 0,
      'data' : {
                       'user_id' : 1,
                       'username' : 'xiaomin'
                  },
      'server_time': 14939939
    }
    

    上面返回的JSON中,使用data来作为数据包,将所有数据统一以这个字段进行包裹。除了data,也可以用list等其他形式的包裹,命名都是自己来根据自己的需要确定的。

    {
      'error_code' : 0,
      'list' : [
                  {'user_id':1,'username':'xiaoming'},
                  {'user_id':2,'username':'goudan'}
                ]
      'server_time': 14939939
    }
    

    总之,不要不分包,直接把所有数据和一些你想返回的全局数据混在一起进行返回。

    其次,错误码。错误码的作用是方便查找错误原因,通常情况下,我喜欢用error_code来表示,当error_code=0时,表示没有发生错误,当error_code>0时,发生了错误,并且提供较为详细的文档,告诉客户端对应的error_code值所产生的错误的原因和位置。

    最后,空白压缩和字符转换。也就是返回的JSON结果不要换行和空格,用一行返回结果,使整个结果文本容量最小。同时,中文等字符或结果中有引号,都进行字符转换,防止结果无法被正确识别。

    文章摘抄:
    7点关于RESTful规范的API接口设计的想法

    相关文章

      网友评论

        本文标题:API接口开发笔记

        本文链接:https://www.haomeiwen.com/subject/ameswttx.html