以前开发或更新 API 时,我们经常需要深入讨论对 API 的结构、命名和功能等,这个花费了大量的时间。

随着 API 行业的蓬勃发展,API 设计也越来越重要。这么多年发展下来,一些如REST API之类的规则也受到大多数人认可,这些规则可以应用于开发流程中,帮助团队快速达成共识,达到提效的目的。

接下来会介绍 API 设计的原理和规则。而在本文中,我们将专注于 Web API。

先用一句话来解释一下,API 是 Application(应用程序)、Programming(编程)和 Interface(接口)的缩写组合,顾名思义,通过一个编写好的接口,连接两个应用程序,可以内部使用,也可以对外开放。

基本上,每次我们使用 Web 应用程序、发送消息或访问某个 URL 时,都在使用对应的 API ,无论它是客户端应用程序还是服务器应用程序,都是通过 API 来传递数据。

由于 API 和其他一切之间的所有通信都是通过 HTTP 完成的,因此 HTTP 非常重要,需要根据不同的目的和需求,采用不同的请求方法:

  • GET — 请求指定资源的表示。使用 GET 的请求应该只检索数据。

  • POST — 向指定资源提交数据。

  • PUT — 用请求数据替换目标资源的所有当前表示。

  • DELETE — 删除指定的资源。

  • PATCH — 对资源应用部分修改。

具体的用法可以在公众号其他文章中了解,网上也有很多相关的内容,就不过多展开。

开发技术在不断发展,API 架构和协议也越来越多。不同的架构和协议,在制定数据类型、命令方式、功能上都有所不同。以前最流行的是基于 XML 的协议,现在也逐渐被 JSON 取代。

而当今世界上最常见的 API 架构毫无疑问是 REST 。当我们使用 REST API 时,必须遵循 JSON 的规范,以有效的 JSON 格式发出测试请求。好的 API 通常会遵循这些规则:

  • API 必须与后端、数据存储、客户端等分开。考虑到安全性和灵活性,API 必须是单独的层级;

  • 不同的请求应该互不干扰,独立处理。这也意味着每个请求都需要包含处理它所需的所有信息;

  • API 应该独立于客户端外发送请求,以相同的方式工作。例如在 Web 服务器、负载平衡器还是任何其他客户端;

  • 资源应该在客户端或服务器端应该是可缓存的。这可以提高客户端的性能,同时提高服务器端的可拓展性;

  • 处理错误并返回相应的错误代码。帮助用户了解是404还是其他问题;

  • API 必须是有容错的。用户有时因为物理原因如网络超时等,发出了重复的请求,这样的请求应该返回相同的结果;

  • 使用 Eolink 或其他工具生成规范的 API 文档。不管是使用还是工作交接,都需要用到 API 文档。

命名端点也有一些很好的方式:

  • 只使用名词:端点应该用指定资源内容的名词命名,而不是为正在执行的功能添加动词。例如命名端点 /users 并使用不同的 HTTP 方法来处理用户实体,而不是创建多个 /get-user 、/add-user 等端点;

  • 使用清晰的名称:端点的名称应该清晰直观。不要使用任何快捷方式或缩写,除非很明显 - /ids 是可以理解的并且比 /identification-numbers 更可取;

  • 通过正斜杠构建层次结构:将端点分组为逻辑组。如 /departments/ids 和 /departments/managers ,比 /departments-ids 和 /departments-managers 更好;

  • 仅使用小写:URL 是区分大小写的,因此最好尽量避免使用大写;

  • 使用“-”分隔单词:端点名称中的不同单词通常用“-”分隔,而不是下划线或骆驼拼写法;

  • 避免使用特殊字符:URL 只能使用 ASCII 字符集发送和接收,因此可以只使用该字符集中的字符。同时其他如“%”,“[]”,“{} ”,“|”,“,”“<>” 最好也尽量避免使用。

大多数 REST API 是与微服务架构一起制作的。

在这种情况下,这种 API 结构将提供更改底层逻辑、添加或删除组件等的灵活性,而无需更改与其他服务的其他通信协议。

相信你也对 Web API 的设计有了一定的了解了,这是无数人验证过的合理的优秀的方案,尝试一下应用到工作中吧!

图中所使用的的接口管理工具是eolink,感兴趣可以自行使用:www.eolink.com

关于API:好的设计和坏的设计【eolink翻译】的更多相关文章

  1. 如何优化API?8个实用技巧!【eolink翻译】

    使用 API 可以让公司利用现代连接的力量来帮助他们扩大全球影响力.传输数据和改进集成.由于 API 使企业能够简化流程并增强可用性,所以企业会使用一些优化策略,不断优化流程,比如接下来要说到的8个技 ...

  2. atitit.eclipse有多少api  扩展点,以及扩展点的设计

    atitit.eclipse有多少api  扩展点,以及扩展点的设计 不赞成使用的.作废的以及内部的扩展点 [扩展]页显示了几个你不应该在你的插件中使用的扩展点.在附表C.1的[描述]栏中,我们使用如 ...

  3. 2014年的Google I/O app设计中的材料设计-渣渣的翻译

    又是一篇翻译,用了三个多小时.http://android-developers.blogspot.co.id/2014/08/material-design-in-2014-google-io-ap ...

  4. paip.自适应网页设计 跟 响应式 设计方法与工具补充(2)o54

    paip.自适应网页设计 跟 响应式 设计方法与工具补充(2)o54 #-----响应式 设计框架 Bootstrap比较热门. Foundation 号称是世界上最先进的响应式前端框架. #---绝 ...

  5. paip.自适应网页设计 跟 响应式 设计的区别跟原理and实践总结

    paip.自适应网页设计 跟 响应式 设计的区别跟原理and实践总结 响应式Web设计(Responsive Web design)的理念是: 1 #-----------自适应布局VS响应式布局 2 ...

  6. 经典信息图表:2013 扁平设计 VS 拟物设计

    inTacto 是一家互动数字公司,由 Alejandro Lazos 和 Sebastian Caramés 成立于2001年.他们刚刚发布一个信息图表:<平面设计 VS 现实主义>.这 ...

  7. paip.自适应网页设计 同 响应 与设计的原理的差and实践总结

    paip.自适应网页设计 同 响应 与设计的原理的差and实践总结 响应式Web设计(Responsive Web design)的理念是: 1 #-----------自适应布局VS响应式布局 2 ...

  8. PPT资料下载 - 问题驱动的软件测试设计:强化测试用例设计

    测试用例设计是整个软件测试过程中非常重要的测试活动,需求规格说明是测试人员开展测试设计的主要参考输入.而在测试实践中基于需求规格说明得到的测试用例,在测试覆盖率.测试效率.测试有效性和测试质量等方面的 ...

  9. 《认知与设计:理解UI设计准则》【PDF】下载

    <认知与设计:理解UI设计准则>[PDF]下载链接: https://u253469.pipipan.com/fs/253469-230382276 内容介绍 <图灵交互设计丛书·认 ...

随机推荐

  1. 基于.Net C# 通信开发-串口调试助手

    基于.Net C# 通信开发-串口调试助手 1.概述 串口调试助手,广泛应用于工控领域的数据监控.数据采集.数据分析等工作,可以帮助串口应用设计.开发.测试人员检查所开发的串口应用软硬件的数据收发状况 ...

  2. Python生成GIF动态图

    python生成摸头GIF 本篇教程演示了如何使用python的PIL库生成GIF图片 源码已经贴在文中,自行取用 效果演示 运行代码,会让你选择要制作的图片 运行完成后,会在同路径下生成dem.gi ...

  3. mapboxgl 中插值表达式的应用场景

    目录 一.前言 二.语法 三.对地图颜色进行拉伸渲染 1. 热力图 2. 轨迹图 2. 模型网格渲染 四.随着地图缩放对图形属性进行插值 五.interpolate的高阶用法 六.总结 一.前言 in ...

  4. 理解 Angular 服务

    理解 Angular 服务 本文写于 2021 年 3 月 29 日 理解 Angular 服务 什么是服务 服务写法 原理简述 提供服务 1. 在服务中注册 2. 在 module 中注册 3. 在 ...

  5. 管家婆软件工贸版(标准财务+进销存+生产管理)V18.0功能简介

    管家婆软件工贸版(标准财务+进销存+生产管理)V18.0功能简介 管家婆 工贸版(标准财务+进销存+生产管理) 1.整体介绍 管家婆工贸版系列软件是针对国内中小型生产加工企业,将ERP管理思想与几十万 ...

  6. 实战派 | Java项目中玩转Redis6.0客户端缓存!

    原创:微信公众号 码农参上,欢迎分享,转载请保留出处. 哈喽大家好啊,我是Hydra. 在前面的文章中,我们介绍了Redis6.0中的新特性客户端缓存client-side caching,通过tel ...

  7. 《HALCON数字图像处理》第一、二章笔记

    目录 第一章 绪论 1.1 图像和图像处理 1.1.1 图像 1.1.2 数字图像 1.1.3 图像处理及其发展过程 1.2 数字图像处理的步骤和方法 1.3 数字图像处理系统的硬件组成 1.4 数字 ...

  8. 网心云在PVE下三种磁盘IO模式(No cache,Write through,Write back)选择与优化指南

    ---------------------------------------------------------------------------------------------------- ...

  9. BPC 脚本

    // //税款计算(现金流) // //2018年5月11日修改,去除之前的送数逻辑,新增BADI计算相关科目 // *SELECT(%010804ZH%, "ID", " ...

  10. VisionPro · C# · 图像保存

    根据客户要求,每次视觉取像运行完毕后,按需保存OK或NG图像,图像分两种: 1.带视觉工具运行结果图像: 2.相机取像原图,.bmp格式. 保存图像代码如下: using System; using ...