Web API 设计摘要

Web API 设计摘要

大家好,又见面了,我是全栈君,祝每个程序员都可以多学几门语言。

Web API 设计摘要

近期读了一本微电子书 Brian Mulloy 所著《Web API Design》感觉颇多收获,特对其内容做了个整理摘要以便回想其观点精华以指导日常工作中的设计思路。

Web API 设计摘要

本文主要讲述 Web API 设计,追求一种更务实的 REST 风格。 正如作者所说 REST 是一种架构风格,而非严格的标准,不是必需在形式定义上去做过多真论,究竟什么才是真正的 REST? 设计的目的是为了表达某样东西是怎样使用的,那么 API 设计的成功与否是由开发者是否可以高速上手并用的愉快。

以下讲述了 Web API 设计的 13 个要点。

Web API 设计摘要

本条是关于 URL 设计的,使用名词而非动词,让 URL 保持简单和符合直觉。
这条是针对资源型 URL 设计而言,为什么?请看下一条。


Web API 设计摘要

用名词表达来领域概念,能够极大的降低 URL(API)的需求量。
使用 HTTP 协议方法动作来操作领域概念集。
通过分离概念和行为极大简化了 API 设计,让 URL 中仅仅体现概念而非行为。


Web API 设计摘要

/elements/elementId 的二级 URL 形式,第一级表达元素集合,第二级表达集合中某个详细元素 id,因此使用名词复数是作者推荐的更符合认知直觉的方法。 同一时候对于元素集合使用更详细的领域名词含义更清晰,若使用抽象的概念名词则表达不清。


Web API 设计摘要

为了表达对象间的关联性,有一种方法是体如今 URL 的层级中,但 URL 层级过深并不便于记忆和认知。 这里推荐用 HTTP ‘?’ 后可选參数来表达关联条件,简化 URL 复杂性。


Web API 设计摘要

Web API 设计摘要

假设可能使用 HTTP 的错误码来映射 API 错误。 HTTP 本身已经定义了广为认知的错误码区间,按类型将错误映射到相应区间对开发者的学习和认知更友好。 提供尽可能详尽的错误信息。


Web API 设计摘要

绝不公布一个不带版本的 API。关于这点做过软件维护的都明确,有一点细节就是版本号号的选择,请使用 v1, v2 整数版本号号而非 v1.1 v1.2 这样的带小数点版本号号机制。这里有个心理认知原因,带小数点的版本号通常给人的感觉会频繁变化,而对于一个开放的 API 而言频繁变更绝对是应该避免的,因此不要使用带小数点版本号号机制。


Web API 设计摘要

当我请求某个对象时不须要其所有属性或须要分页时怎么办?上图中样例已经非常好的回答了。


Web API 设计摘要

该条针对非资源型 URL 设计而言,由于有些情况就是请求做一个计算,如上图中所看到的请求金额按币种进行转换。 对于此类 API,使用动词就是合适的,但最好在你的 API 文档中将此类 API 独立分类说明。


Web API 设计摘要

开发者对文件系统的后缀名命名方式都非常熟悉了,因此使用后缀名表达响应格式是自然的。 那么默认格式应该选择什么呢?毫无疑问是 JSON,这一点与 javascript 是 Web 端的通用语言有关。


Web API 设计摘要

如上,既然我们要照应 javascript 语言,那么属性命名自然也要採用 javascript 语言传统的驼峰命名法。


Web API 设计摘要

简单的搜索能够用资源型 API 来模式化,但全局的搜索 Google 模式大家都非常熟悉。


Web API 设计摘要

为 API 申请独立的子域名,有且仅有一个是最好的,并且最好是这个域名模式 api.youdomain.com


Web API 设计摘要

有了 API 还不够,辅助以 SDK 工具包能够进一步减轻 API 使用者的负担,最重要的是还能避免 API 的误用和低效使用。 事实上这里另一个优点:

Eating your own dog food


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/118463.html原文链接:https://javaforall.net

(0)
上一篇 2021年12月5日 下午7:00
下一篇 2021年12月5日 下午8:00


相关推荐

  • 滴滴全民拼车日背后的运维技术揭秘

    滴滴全民拼车日背后的运维技术揭秘桔妹导读:抗击疫情,桔妹提醒大家出门带好口罩,勤洗手,多通风。武汉加油!中国加油!在大家开工之际,桔妹邀您阅读滴滴全民拼车日背后的运维技术揭秘。滴滴在2019年12月举办了空前盛大的全民…

    2022年5月5日
    93
  • 内核置顶[置顶] Linux 内核定时器

    内核置顶[置顶] Linux 内核定时器

    2021年8月24日
    62
  • 带着问题看源码2-NodeRed的用户认证机制是怎样的

    带着问题看源码2-NodeRed的用户认证机制是怎样的文章目录 1 几种常用的认证机制 1 1 HTTPBasicAut 2 OAuth2 NodeRed 中的认证机制使用 2 1 基于用户名 密码凭据的身份验证 2 2 针对任何 OAuth OpenID 提供者 如 Twitter 或 GitHub 进行身份验证 2 3 自定义用户身份验证 2 4 自定义的身份验证 token2 5 使用自定义 token 访问编辑器 3 功能实现的参与者 3 1 oauth2orize 主要功能及在本模块中的意义 3 2 passport3 3 express sessi

    2025年12月9日
    8
  • nginx正向代理的配置及实现

    nginx正向代理的配置及实现正向代理 如果把局域网外的 Internet 想象成一个巨大的资源库 则局域网中的客户端要访问 Internet 则需要通过代理服务器来访问 这种代理服务就称为正向代理 目前现状 只有 1 个机器能上网 web 其他机器不能方法 能上网的做一个代理 web 服务器中转 其他机器连接它即可 采用 nginx1 到 nginx 的官网中 http nginx org en download html 下载 Linux 版本的安装包 我下载的版本为 2 源码安装 a tar

    2026年3月26日
    3
  • OSSIM下部署HIDS

    OSSIM下部署HIDS

    2022年3月8日
    56
  • stm32编程入门教程_零基础编程入门书籍

    stm32编程入门教程_零基础编程入门书籍前言在中国,熟悉单片机的人士大多会听说过STM32。这是意法半导体(STMicroelectronics,简称ST)的32位微控制器(MCU)家族,基于ARMCortex-M内核。2007年,STM32F1诞生。这是业界首款搭载ARMCortex-M3内核的32位MCU,采用180nm闪存工艺,配有128KB闪存和20KBRAM,运行主频为72MHz,在当时属于相当高的配置。随后的10年内,STM32产品线相继加入了基于ARMCortex-M0、Cortex-M4和Cortex-M7…

    2025年9月28日
    7

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号