关闭 x
IT技术网
    技 采 号
    ITJS.cn - 技术改变世界
    • 实用工具
    • 菜鸟教程
    IT采购网 中国存储网 科技号 CIO智库

    IT技术网

    IT采购网
    • 首页
    • 行业资讯
    • 系统运维
      • 操作系统
        • Windows
        • Linux
        • Mac OS
      • 数据库
        • MySQL
        • Oracle
        • SQL Server
      • 网站建设
    • 人工智能
    • 半导体芯片
    • 笔记本电脑
    • 智能手机
    • 智能汽车
    • 编程语言
    IT技术网 - ITJS.CN
    首页 » UI前端 »Heroku的HTTP API设计指南

    Heroku的HTTP API设计指南

    2014-09-03 00:00:00 出处:ITJS
    分享

    Wesley Beary是Heroku API团队的成员,他整理了一份用于创建HTTP+JSON API的指南,并以非常精炼的语言对该指南进行了陈述。

    该指南以若干条建议开始:

    需要所有的API调用都使用TLS。针对非TLS的调用以403 Forbidden进行回应 始终对API进行版本化。使用Accept 头部来指定版本。需要客户端指定API版本,而不是简单地以默认版本进行回应。 使用ETag 头部来支持资源的缓存 识别出每个具有X-Request-ID的响应;这对达成日志跟踪或调试等目的会非常有用 使用Range, Content-Range, Next-Range 来处理数据量较大的响应

    针对发出的请求,该指南提到了如下几点:

    返回合适的状态码,例如200: 成功的 GET 或 同步的DELETE, PATCH201: 成功且同步的POST
    …401: 未经授权的调用429: 请求频率超过限制等等。 当可用时总是返回完整的资源 接受请求中那些与JSON响应对称的序列化JSON 使用一致的路径格式。除非特指单例,否则资源名称应该使用复数的形式 路径和属性都使用小写字母,从而与主机名保持对齐 允许为某些资源指定除UUID以外的名称,例如像应用的名称 尝试通过尽可能将资源配置到离根路径较近的路径位置来限制资源嵌套的深度

    当谈到关于响应的部分,Beary建议如下:

    为每个资源使用全局唯一的ID 为资源提供标准的时间戳 针对时间戳,应该使用格式为ISO8601的UTC时间 将外键关系嵌入到当前资源从而可以包含更多关联资源的详情,并且无须修改响应的结构, 提供详细的错误信息,包括一个机器可读的ID、一段人类可读的错误消息以及一个可选的指向更多细节的URL 设定一个请求频率限制,然后可以使用一个像RateLimit-Remaining这样的头部来在每个响应中告知客户端可用请求令牌的剩余请求数量 应该对所有响应中的JSON进行压缩

    该指南还包括了更多的相关忠告:

    以机器可读的格式提供JSON schema 包括为开发者而准备的详细的API文档 允许开发者测试API API应该根据它们的稳定性状态分别标记为:原型(prototype)/开发(development)/生产(production)

    我们就如何总结出这些指南以及如何对它们中的部分进行解释向Beary进行了采访。

    InfoQ:你从一开始就拥有一份API设计指南吗?

    WB: 我从早期就拥有了一部分指南,但是它们都相当地粗糙,且仅仅存在于我的脑海之中。自从我开始 github.com/fog/fog上及其相关的工作以来,我已经消费过很多不同的API,这帮助我近一步形成了这些观点。

    InfoQ:假如你一开始没有这些指南,那么你是如何开发API的?通过不断的迭代吗?

    WB: 因为缺乏一个更加正式的指南,这无疑会是一个迭代的过程。不幸的是,除了有点慢之外,迭代的过程也是无法伸缩的,它成为了我向API新增内容的障碍。所以我们构建了该指南来推动这些决策制定的分发工作。我们会继续进行迭代,但是就指南本身而言通常现在也处于迭代之中。我们可以看到有很多正在进行中的讨论(github.com/interagent/http-api-design/issues),伴随着我们学习到更多的经验以及其他开发者对这些指南的采用,这些讨论将持续对我们的这个文档进行阐明和发展。

    InfoQ:为什么建议在针对PUT或DELETE操作时返回整个资源?

    WB:异常情况是接口和指南中的对立部分。有时客户端期望得到整个资源,而出于对优化的考虑我们通常会对客户端的这种期望不加理会。我认为可以将该行为视为是可选的,通常可选的行为在很多场景中都是有意义的,但是具备一个简单、有用的默认选项是有价值的。也就是说,这是一个有争议的观点,而在 https://github.com/interagent/http-api-design/issues/9上可以找到一些正在进行中的讨论,它们对这个观点的优缺点进行了更加深入地探讨。

    InfoQ:为什么只使用ISO8601格式的UTC时间?

    WB:这与返回整个资源相似,具有一致的规则(不考虑异常)可以更容易地对你正在做的事情进行思考,从而减少你在设计某些事物的时候需要做出决策的次数。同样的,时区是疯狂而可怕的。我已经记不清我所遇到或引起的与时区相关的错误次数了。为了有望减少问题,我们选择了一个我们所熟知的时区和格式来在各方面进行使用。

    查看英文原文:Heroku’s HTTP API Design Guide

    上一篇返回首页 下一篇

    声明: 此文观点不代表本站立场;转载务必保留本文链接;版权疑问请联系我们。

    别人在看

    hiberfil.sys文件可以删除吗?了解该文件并手把手教你删除C盘的hiberfil.sys文件

    Window 10和 Windows 11哪个好?答案是:看你自己的需求

    盗版软件成公司里的“隐形炸弹”?老板们的“法务噩梦” 有救了!

    帝国CMS7.5编辑器上传图片取消宽高的三种方法

    帝国cms如何自动生成缩略图的实现方法

    Windows 12即将到来,将彻底改变人机交互

    帝国CMS 7.5忘记登陆账号密码怎么办?可以phpmyadmin中重置管理员密码

    帝国CMS 7.5 后台编辑器换行,修改回车键br换行为p标签

    Windows 11 版本与 Windows 10比较,新功能一览

    Windows 11激活产品密钥收集及专业版激活方法

    IT头条

    无线路由大厂 TP-Link突然大裁员:补偿N+3

    02:39

    Meta 千万美金招募AI高级人才

    00:22

    更容易爆炸?罗马仕充电宝被北京多所高校禁用,公司紧急回应

    17:19

    天衍”量子计算云平台,“超算+量算” 告别“算力孤岛时代”

    18:18

    华为Pura80系列新机预热,余承东力赞其复杂光线下的视频拍摄实力

    01:28

    技术热点

    MySQL基本调度策略浅析

    MySQL使用INSERT插入多条记录

    SQL Server高可用的常见问题

    3D立体图片展示幻灯片JS特效

    windows 7上网看视频出现绿屏的原因及解决方法

    windows 7 64位系统的HOSTS文件在哪里?想用它加快域名解析

      友情链接:
    • IT采购网
    • 科技号
    • 中国存储网
    • 存储网
    • 半导体联盟
    • 医疗软件网
    • 软件中国
    • ITbrand
    • 采购中国
    • CIO智库
    • 考研题库
    • 法务网
    • AI工具网
    • 电子芯片网
    • 安全库
    • 隐私保护
    • 版权申明
    • 联系我们
    IT技术网 版权所有 © 2020-2025,京ICP备14047533号-20,Power by OK设计网

    在上方输入关键词后,回车键 开始搜索。Esc键 取消该搜索窗口。