
休息是代表性国家转移的首字母缩写词。 Restful API是使用HTTP请求访问和更改数据的应用程序程序接口(API)的架构样式。该数据可用于获取,放置,发布和删除数据类型,该数据指的是读,更新,创建和删除有关资源的操作。有关更多详细信息
任何基于REST的体系结构中使用的主要功能是:
您的申请必须满足某些限制或原则。让我们详细介绍这些原则。
有六个基本原则,以下是六个指导原则:
无状态:从客户端发送到服务器的请求包含完全理解它所需的所有必要信息。它可以是URI,查询弦参数,车身甚至标题的一部分。 URI用于唯一识别资源,并且身体持有请求资源的状态。服务器完成处理后,通过标题,状态或响应主体将适当的响应发送回客户端。
客户端服务器:它具有统一的接口,可将客户端与服务器分开。将问题分开有助于改善用户界面在多个平台上的可移植性,并增强服务器组件的可扩展性。
统一界面:为了在整个应用程序中获得均匀性,REST定义了四个接口约束,这是:
Resource identification
Resource Manipulation using representations
Self-descriptive messages
Hypermedia as the engine of application state
可缓存:为了提供更好的性能,通常可以使应用程序可缓存。它是通过将服务器的响应标记为可隐式或明确的可缓存或不可接受的。如果响应定义为可缓存,则客户端缓存将来可以重用响应数据以进行等效响应。它还有助于防止重复使用过时的数据。
分层系统:分层系统体系结构允许通过限制组件行为来更稳定应用程序。该体系结构可实现负载平衡,并提供共享的缓存以促进可扩展性。分层体系结构还有助于增强应用程序的安全性,因为每一层中的组件都无法超越其所处的下一层。
按需代码:按需代码是可选的约束,最少使用。它允许客户代码或小程序通过应用程序中使用的接口下载和扩展。从本质上讲,它通过创建不依赖其自己的代码结构的智能应用程序来简化客户端。
现在,您知道了什么是REST API,以及为了提供有效的应用程序所需的一切,让我们更深入地研究,并使用所有趋势技术和FrameOwrks查看构建REST API的过程。
休息和简单的对象访问协议(SOAP)提供不同的方法来调用Web服务。 REST是一种体系结构样式,而SOAP定义了基于XML的消息交换的标准通信协议规范。 REST应用程序可以使用肥皂。
宁静的Web服务无状态。与SOAP相比,基于REST的实现很简单,但是用户必须了解所传递的上下文和内容,因为没有标准的规则来描述其余的Web服务接口。 REST服务可用于限制的配置文件设备,例如移动设备,并且易于与现有网站集成。
肥皂需要更少的水暖代码,意味着与REST服务设计相比,将主要代码模块连接在一起的低级基础结构代码。 Web服务描述语言描述了一组常见的规则,以定义服务的消息,绑定,操作和位置。 SOAP Web服务对于异步处理和调用很有用。
这些是开发REST API时必须考虑的一些观点:
极大的有效载荷响应数据将减慢请求完成,其他服务呼叫以及影响降级性能。如您所知,既然我们正在向客户返回所有订单,而不是仅仅为他们的当前订单,我们将不得不处理某些绩效降级。
我们可以使用GZip Compression来减少有效载荷尺寸。这减少了我们在Web应用程序(客户端)上响应的下载大小,并增加了上传速度或创建某些实体(订单)。我们可以在Web API上使用Deflate compression 。或者,我们可以将Accept-OdingRequest标题更新为GZIP 。
缓存是提高API性能的最简单方法之一。如果我们的请求经常回馈相同的响应,那么该响应的缓存版本有助于避免其他服务呼叫/数据库查询。您将希望确保在使用缓存以定期无效缓存中的数据无效,尤其是在发生新的数据更新时。
假设我们的客户希望下达自动零件的订单,我们的应用程序呼吁某些自动零件API以获取零件价格。由于响应(零件价格)每周仅更改一次(@ 1:00 AM),因此我们可以在剩余时间内缓存响应。这使我们免于每次返回相同的零件价格。类似情况您可以使用缓存避免额外的呼叫或请求。
慢速网络将降低即使是最坚固设计的API的性能。不可靠的网络可能会导致停机时间,这可能会导致您的组织违反SLA,服务条款,并承诺您可能对客户做出的承诺。重要的是要投资适当的网络基础架构,以便我们可以保持所需的性能水平。这可以通过利用和购买足够的云资源和基础架构来实现(example: in AWS, allocate the proper # of EC2 instances, use a Network Load Balancer) 。另外,如果您有大量的背景过程,请在单独的线程上运行这些过程,以避免阻止请求。您还可以使用镜子和内容交付网络(CDN)(例如CloudFront)来更快地在全球各地提供请求。
您可能会有一种情况,即您的API会遭受DDOS攻击,该攻击可能是恶意的和故意的,或者当工程师打电话给API从某些本地应用程序中执行API时,您可能会遭受恶意和故意。您可以通过测量交易,并monitoring the number of how many transactions occur per IP Address, or per SSO/JWT Token (if the customer/calling app is authorized before calling the API) ,则可以避免这种情况。
这种限制限制的方法有助于减少过度的请求,从而减慢API的速度,有助于处理意外通话/执行,并主动监视和确定可能的恶意活动。
在提起和补丁操作的工程师中,这是一个常见的误解。它们在更新资源时相似,但他们每个人都以不同的方式执行更新。将操作通过向整个资源发送更新来更新资源。补丁操作将部分更新应用于需要更新的资源。产生的拨打电话会产生较小的有效载荷,并在大规模上提高性能。
Pro-Tip: Even though PATCH calls can limit the request size, you should note that it is not Idempotent.
Meaning, it is possible that a PATCHcan yield different results with a series of multiple calls.
So, you should carefully and deliberately consider your application for using PATCH requests,
and make sure that they are idempotently implemented if needed. If not, use PUT requests.
这也许是您将在此处阅读的最重要的技巧之一。如果您应该从此仓库中学到一件事,那应该是这个!这是没有谈判的。
对日志,监视和提醒工程师在出现问题之前就可以帮助工程师诊断和补救问题。许多API(基于Express/Node的Java,GO)具有预定义的终点,用于评估以下内容:
`/health`
`/metrics`
如果您没有启用日志记录,并且存在一个潜在的问题,则您将无法跟踪原点或在特定请求中发生问题的地方。
如果您没有启用监视,则从分析的角度来看,您将不会知道某些问题或错误的发生频率。然后,这将阻止您考虑可能的解决方案。
而且…如果您没有启用警报,您将不知道是否存在问题,直到客户(或更糟的是客户)报告它。
分页有助于从多个响应中创建内容桶。这种优化有助于改善响应,同时保留传输/显示给客户的数据。您可以通过仅针对客户要求的响应/结果提供响应/结果来标准化,细分和限制有助于减少结果复杂性的响应,并改善总体客户体验。
我们知道API是惊人的,如果适当优化和增强了性能,可以为业务和客户提供丰富的体验而非常有力。业务需求和客户期望总是会随着时间的流逝而发展。作为负责任的工程师,我们决定如何以表现方式构建我们的API,这可以帮助我们实现并超越目标。
这些技巧只是冰山一角,并在一般环境中应用于所有API。根据您的特定API和用例,它与之互动的服务,被调用的位置等。您可能必须以不同的方式实现这些技巧。
与Laravel一起休息API-护照
与php的REST API - 糟糕
与Python的休息API-烧瓶
带Python的REST API -DJANGO -RESTFRAMEWORK
与GO -MUX进行休息API
与Go一起休息API - 杜松子酒
带有nodejs的REST API - Express-基本
带有nodejs的REST API -Express- JWT-续集 - 前进
在几分钟内非常容易创建REST API,您可以根据您的语言和框架首选项选择上述任何代码库,并遵循说明创建REST API。
愉快的编码?
LinkedIn:https://www.linkedin.com/in/the-startup-cto/
媒介:https://apige.medium.com/
Twitter:https://twitter.com/htngapi