译者:DevOps亮哥
审校:DevOps亮哥
API一词相信每一个开发人员都不陌生,API是软件系统之间或不同组成部分之间进行连接的约定。特别是移动应用程序和微服务架构的不断普及,API就是他们成功背后的功臣,这个时候如何设计和开发API就显得格外重要,今天这篇文章就是一份完整的API开发指南,介绍了在开发API过程中的内容、工具和最佳实践。请留好收藏,还可以转发给其他的朋友。
一、API介绍
API,它的全称是Application Programming Interface——应用程序编程接口,是一组指令、标准或要求,使软件或应用程序可以利用另一应用程序、平台或设备的功能/服务来获得更好的服务。简而言之,它可以让应用程序彼此通信。例如,当我们在使用支付宝、微信APP时,都会通过API请求后台服务器上的数据,在APP上进行展示。
API是处理数据或启动两个产品或服务之间的通信的所有应用程序的基础。它使移动应用程序或平台能够与其他应用程序或平台共享其数据,并在不涉及开发人员的情况下简化用户体验。最重要的是,API消除了从头开始构建类似程序或平台的需求。您可以使用其他一些应用程序/平台中的现有应用程序。基于这些原因,应用程序开发人员和业务主管都将重点放在API开发上。
在深入研究之前,先让我们看一下使您更容易理解该概念的基本术语。
二、API术语
- API Key:当一个API请求通过Header或参数来识别调用者时,传递到请求中的授权码就是API Key。
- Endpoint:当一个API与另一个系统交互时,通信通道的两端被认为是Endpoint。
- JSON:是用于API请求参数和响应主体的数据格式。
- GET:RESTful API的HTTP方法,用于获取资源。
- POST:RESTful API的HTTP方法,用于创建资源。
- OAuth:它基本上是一个开放标准的授权框架,可以在不直接共享凭据的情况下从客户端进行访问。
- REST:REST(代表性状态转移)是一种编程体系结构的实现,用于提供两个设备/系统之间的通信效率。它是一个轻量级的,他是通过数据引用而不是数据副本的方式来共享数据,基于这个架构创建的系统称为“RESTful”系统,而RESTful系统中最著名的例子就是万维网。
- SOAP:SOAP或简单对象访问协议是一种消息协议,用于在计算机网络中执行Web服务时共享结构化信息。它与XML信息集和应用程序层协议(如HTTP和SMTP)一起使用,分别用于消息格式和消息协商与传输。
- 延迟:延迟定义为API从请求到响应的过程中所花费的总时间。
- 速率限制:API速率限制是指定义最终用户可以访问API的速率的过程。也就是说限制用户每次可以向API发送的请求数。
- API限流:调节用户在特定时间段内使用API的过程称为限流。这可以用于API限制,比如,设置每天限制1000个API请求,当用户点击1001个请求时,服务器会返回429的HTTP状态码,并带着“请求太多”的消息。
三、API的工作流程
假如打开一些旅游应用程序/网站来预订航班,再填写了表格——输入了出发和返回日期,城市,航班以及其他相关详细信息——并提交了。只需几秒钟,屏幕上就会显示航班清单以及价格,时间,座位可用性以及其他详细信息。
为了提供这样严格的数据,该平台向航空公司的网站发送了请求,以访问其数据库并通过API获取相关数据。网站以API形式传递给平台数据作为响应,平台将其显示在屏幕上,基本的过程如下:
在此,航班预订应用程序/平台和航空公司的网站充当端点(EndPoint),而API充当简化数据共享过程的中介。在谈论端点通信时,API有两种形式,即REST和SOAP。尽管这两种方法都能带来有效的结果,但目前移动应用开发程序更喜欢使用REST而不是SOAP,因为SOAP API繁重且依赖于平台。
下面就介绍一下如何开发API?选择哪些工具和技术?
四、开发API的工具
在开发API的过程中有许多工具和技术可以使用,下面介绍几个用于为开发人员开发API的流行工具:
- Apigee:它是google的API管理工具,通过重新建立API方法来帮助开发人员和企业家在数字化转型方面取得成功。
- APIMatic and API Transformer:提供了复杂的自动生成工具,通过API特定格式构建高质量的SDK和代码片段,并将其转换为其他规范的形式,如RAML,API Blueprint等等。
- API Science:该工具主要用于评估内部API和外部API的性能。
- API Serverless Architecture:该产品借助云的服务器基础架构协助移动应用程序开发人员设计、构建、发布和托管API。
- API Platform:这是一个适用于Web API开发的开源php框架。
- OAuth2:这是一种用于身份验证和授权API的身份管理解决方案。
- ClearBlade:这是一个API管理程序,用于将IOT技术融入流程中。
- GitHub:这是一个开源的Git存储库,用来托管代码服务,可以提交代码、发布请求,版本控制。还可以将代码保存在私有存储库中。
- Postman:这是一个API工具链,使开发人员能够运行、测试、记录和评估其API的性能。
五、高效API的特性
1、修改时间戳/按条件搜索:API应该允许用户根据不同的条件(例如日期)搜索数据,并能对检索的数据进行修改(更新,编辑和删除),并能记录修改的时间戳。
2、分页:当数据量很大的时候,我们不希望每次都获取完整的数据列表。在这种情况下,API应该能够确定一次显示多少数据以及总页数,还应告知最终用户剩余的数据页数。
3、排序:API应授权用户根据修改时间或其他条件对数据进行排序。
4、JSON支持/ REST:尽量使用RESTful风格进行有效的API开发。REST API是无状态的,轻量级的。此外,JSON的语法类似于大多数编程语言的语法,这使移动应用程序开发人员可以轻松地将其解析为任何其他语言。
5、通过OAuth进行授权:由于API需要对外暴露,因此还需要通过OAuth进行授权-您只需单击一个按钮即可完成。
六、构建API的最佳实践
- 流量限制:流量限制是考虑流量溢出,并保护其免受Dos攻击的一种好习惯。
- 将API网关视为增强点:在设置限制规则、API 秘钥和OAuth的应用时,必须将API网关视为最佳实施点。只有正确的、合法的用户才能访问后面的数据,并能在网关这里加密消息或编辑私密消息,从而分析和管理API。
- 允许覆盖HTTP方法:由于某些代理仅支持GET和POST方法,因此需要让RESTful API 覆盖HTTP方法,可以使用自动以HTTP头X-HTTP-Method-Override。
- 评估API和基础结构:当前,实时分析是可以实现的,但是如果API服务器存在内存泄漏、CPU耗尽或其他问题该怎么办?考虑到这种情况,可以使用一些工具来对API进行评估和排查。
- 文档:为API编写文档,可以使用OpenAPI的规范的格式,这样其他应用程序开发人员可以轻松的了解整个过程并利用这些信息来提供更好的用户体验。总之,良好的API文档可以减少项目实施的时间,提供API开发的效率。
翻译自:https://appinventiv.com/blog/complete-guide-to-api-development/