Grow with AppMaster Grow with AppMaster.
Become our partner arrow ico

REST API实例

REST API实例

在整合的时代,跨多个平台的数据交换比以往任何时候都更加关键。考虑一个没有集成的网上商店。你的网站除了管理产品列表外,还必须开发管理用户账户、电子邮件订阅、付款处理、发货和其他任务的系统。将这些工作外包给其他供应商会更有效,因为这不是一个可扩展的选择。

应用程序编程接口,或网络API,是软件程序利用的相互通信的方式。APIs为两个程序之间的数据交换提供了一个一致的协议。在网络API的帮助下,你的网上商店可以与交付软件、客户应用程序、支付应用程序和任何其他所需的连接进行通信。

有各种方法来创建API;然而,如果你想为你的服务添加软件连接,有一种独特的技术你应该熟悉。REST APIs网络服务。在这篇文章中,我们将讨论REST API的例子,什么是REST API,REST API如何工作,REST API的用途,历史,它的元素,以及更多。

究竟什么是REST API?

代表性状态传输或REST APIs网络服务是微服务框架中链接组件的最标准做法,因为它们提供了一种多功能、可移植的方式来整合应用程序。REST是一种流行的API设计,我们采用它以标准化和可预测的方式与内部和外部利益相关者进行互动。

网络应用程序的用户经常采用REST APIs网络服务来相互交流。例如,在一个社交媒体程序中获取和审查账户细节。REST APIs浏览器可以被看作是网络的语法。随着云计算使用的增加,在线客户利用网络API来提供和管理对数字业务的访问。

设计网络API,使客户能够在分散的环境中动态地连接、管理和参与数字网络服务是一个明智的决定。谷歌、eBay、Facebook、亚马逊和Twitter等网站都采用了RESTful网络服务。客户端应用程序现在可以使用REST来访问这些网络服务。

REST API MODEL

REST技术比其他相关技术更受青睐。这是因为REST网络服务消耗的带宽较少,这使它们成为effi古在线活动的理想选择。RESTful网络服务也可以使用JavaScript或Python等编程语言来开发。

REST APIs是如何工作的?

要知道REST APIs如何工作,我们必须定义一些关键术语。

客户端

一个API用户被称为客户端。客户端向网络API发送查询,以获得数据或对程序进行修改。你的互联网浏览器就是一个客户端;它与各种网络API进行通信,以获得页面内容。你的计算机收到所需的信息,然后显示在显示屏上。

以下是最常用的HTTP方法。

  • 使用GET请求来返回请求的数据或请求的资源。
  • 使用POST指令来做一个新的资源
  • 使用PUT指令对现有资源进行修改或持续更新
  • 使用DELETE指令来摆脱一个资源。

例如,对Youtube的API的HTTP请求可以是对某个视频或帖子的GET请求资源,或者是发布新照片的POST请求。你可以使用POST请求方法来发布新的帖子。相应地,一个与自动服务实现集成的客户网络服务平台可以采用PUT指令来更新或消除一个自定义的Hello。

获取请求

  • GET请求的缓存是可能的。浏览器的历史包括GET请求。
  • 将GET请求加入书签是可能的。
  • 在处理关键材料时不要利用GET请求。
  • 对GET请求有长度限制。
  • 只有数据查询是通过GET请求进行的

POST方法

POST请求是一种向服务器发送信息以添加或更新资源的帖子方法。HTTP请求的请求体包含了被发布到服务器端的数据。

  • POST请求后方法永远不会进入缓冲区。
  • POST请求不存储在浏览器的历史中。
  • POST请求不可以作为书签

响应主体

响应体是RESTful API的重要元素之一。请求的数据包括在响应体中。响应体可能包括与输出和输出逻辑端口有关的数据。

资源

网络API可以给用户的任何数据都是一种资源。例如,在Facebook的API中,个人、页面、图片或评论都可能被视为资源。资源标识符是给每个资源的一个特殊术语。

网络服务器

接受客户请求体的程序使用一个网络服务器,它容纳了消费者要求的资源。服务器可以通过API与客户沟通,而不向客户提供对其数据库中保存的信息的即时访问。当用户访问RESTful网络服务以提交请求体时,服务器会向浏览器发送资源状态的规范化描述。

这标志着服务器在某种程度上并没有向客户端提交确切的资源,而是反映了它的状况,即资源在特定时间戳的情况。为了帮助理解,响应以一种轻量级的格式返回。

JSON(JavaScript对象符号)被广泛使用,因为它对人和机器都是可读的,并且在帮助促进网络可访问性方面表现出色。JSON主要用于在网络应用和客户端应用中发送请求体。它是一种与各种编码兼容的形式。除JSON之外的API数据格式涉及XML、YAML、CSV、HTML和纯文本。API的用户可以通过使用自定义媒体类型来选择他们想要的任何数据格式。

JSON

REST APIs的历史

在REST纳入API之前,许多程序员不得不用SOAP来工作。构建、利用和调试SOAP是众所周知的困难任务。值得庆幸的是,REST是在Roy Fielding的指导下由一个程序员团队开发的,永远改变了API的环境。

以下是REST APIs发展的时间顺序。

REST之前

程序员们手动写了一个XML文件,里面包含了一个远程过程调用(RPC)的内容,用SOAP连接网络API。之后,设计者会将他们的SOAP包发布到指定的端点。

在2000年的时候

一个由Roy Fielding领导的程序员团队选择开发一个框架,使任何服务器能够与任何其他服务器进行通信。他为REST APIs制定了限制。因为这些准则是通用的,所以开发软件更容易。

在2002年的时候

eBay在2002年开发了它的RESTful API,向任何可能从中受益的网站开放其市场。正因为如此,另一个电子商务的巨头亚马逊也对其感兴趣,并在2002年发布了它的RESTful API。

在2004-2006年期间

Flickr的RESTful网络服务于2004年发布,允许作者快速将照片添加到他们的网站和社交媒体帖子中。当Twitter和Facebook注意到有大量的程序员在扫描网站并制作 "科学怪人 "的API时,他们都在大约两年后公开了他们的API。

在2006年到现在

RESTful网络服务现在被程序员广泛接受,他们使用这些RESTful网络服务来提高他们的应用程序和网站的性能。AppMaster促进了合作,使构建API变得更容易,让你更快地完成。

REST APIs是用来做什么的?

RESTful网络服务的主要好处之一是它提供了大量的灵活性,使您能够更有效地使用这种RESTful API。下面是一些REST API的例子,说明REST API的用途。

基于云的应用

由于其调用的无状态性,REST API在云端应用中是有优势的。无状态模块可以很容易地重新安装和增长,以满足出错时的容量要求。一个结合了本地和互联网组件的软件程序就是一个云应用程序。这种模式使用由网络浏览器访问的远端服务器和正在进行的互联网网络服务来执行指令。

云应用主机的传统位置是由第三方云计算网络运营商运行的遥远的计算机系统。邮件、文件共享和存储、订单输入、库存控制、Microsoft Word、客户关系管理(CRM)、信息收集以及财务和会计是使用基于云的应用程序执行的工作的例子。

REST应用程序编程接口(API)可用于连接外部信息源和存储资源。程序员可以利用REST APIs使云端应用变得更小,将数据传输到其他程序中进行处理或分析计算,并将结果返回给软件程序。经过测试的API执行积极的统一性,这可以加速生产并产生真正的结果。

云应用程序的一个典型例子是Google Docs或Office 365。Google Docs或Office 365所需要的只是一台可以运行搜索引擎和互联网网络服务的电脑。计算机网络提供用户界面和操作,包括信息存储。众多不同的云应用可以由你的公司使用云应用主机托管。

云服务

由于你需要管理如何处理URL以通过API连接到资源,所以REST API对云网络服务也很有用。由于云计算应用,RESTful网络服务架构现在可能会成为未来的标准。程序员使用RESTful网络服务,使用互联网连接到云服务。开发人员创建代码,使用互联网供应商的API,给出必要的输入和变量,然后检查答案,以确保该行动按预期进行。

what-is-cloud-conputing

终端用户可以使用RESTful网络服务这样的云服务来访问云网络服务提供的客户端应用程序或网络服务,如计算基础设施、存储系统或跟踪系统。API概述了一个应用程序的能力和操作以及执行这些操作所需的具体内容。为了维护客户的隐私和安全,API通常依赖于REST或简单对象访问协议(SOAP)的互操作性以及OAuth 2.0等许可机制。

各种网络服务被称为 "云服务",并根据要求提供给企业和消费者在线使用。这些网络服务的创建是为了提供快速、廉价的工具和应用程序的访问,而不需要硬件或基础设施的要求。大多数员工使用云网络服务,从电子邮件到文件协作,无所不包。

网络使用

这些网络API可以从用户的网络项目、iPhone应用程序、物联网设备或Windows Mobile获得,因为REST不依赖于客户端功能。你可以为你的业务创建架构,而不受制于特定的客户端框架。

一个REST API的例子

让我们来讨论一个REST API的例子。点击下面的链接,向Open Trivia数据库提出一个任意的情报查询。这样的RESTful网络服务被用来提供一个公共网络API。你的电脑会以JSON格式显示一个单独的测验问题和它的回答。

使用任何HTTP浏览器,如url,你可能发出以下查询,并在响应体中收到一个响应:https://opentdb.com/api.php?amount=1&category=18

网络服务的XML文件的响应体将包含雇员的所有信息。

所有广泛使用的编程方言和开发者工具都有HTTP客户端库,如JavaScript、Node.js和Deno中的retrieve以及PHP中的file get contents()。一个JSON答案可以被阅读和使用,因为它在以HTML或其他风格显示之前是机器可读的。

Rest和REST APIs

随着时间的推移,许多数据传输方法已经发展起来。你可能遇到过CORBA、SOAP或XML-RPC等选择。大多数都制定了严格的消息准则。Roy Fielding在2000年首次概述了REST,它比其他的要直接得多。

它是RESTful网络服务的建议和限制的集合,而不是一个规范。这些包括以下的架构限制。

客户端-服务器分区

在REST架构下,客户端和Web服务器只能在一个方向上进行通信:客户端请求域控制器,控制器或服务器对请求进行响应。网络服务器无法提交请求,客户也无法做出反应;消费者启动所有连接。

RESTful网络服务通过缓解客户和服务器之间的互动来保持客户和服务器的隔离。客户电脑可以开发而不用担心影响到另一个主机,而服务器的材料可以被改变而不会不知不觉地影响到客户。

统一的界面

根据这一策略,所有的查询和反应都必须遵守标准的proweb程序,或将其信息风格化。应用程序和服务器是用各种编程语言开发的,这些语言在调解器的作用下彼此表现不佳。统一接口是一种方言,任何客户都可以用它来与任何REST APIs进行互动。

用统一的交互方式翻译应用程序之间的请求和反应才有可能。小的差异会混杂和丢失信息,当网络API修改他们的请求程序时,解决方案将不得不升级他们的请求程序。一个一致的接口消除了这种前景。

获取访问 https://www.googleapis.com/youtube/v3/channels?part=contentDetails

像所有的REST客户端应用一样,这个方案包括两块数据。HTTP技术是GET。这描述了客户端希望对资源采取的行动。用户可以进行四种基本的HTTP方法。

HTTP,即超文本传输协议,是大多数REST API的通用语言。HTTP在设计时并没有考虑到REST。此外,REST接受这种数据传输作为REST感知应用程序的标准。对于使用HTTP与REST APIs,客户端以你可能熟知的格式提交一个请求。例如,一个视频信号恳求到YouTube API,看起来是这样的。

  • 使用GET命令来获得一个资源。
  • 使用POST指令来制作一个新的资源
  • 使用PUT指令对现有资源进行修改或持续更新
  • 使用DELETE指令来摆脱一个资源。

HTTP方法指定了有关特定资源的预期行动。HTTP方法也被称为HTTB动词。

URL是HTTP

统一资源标识符,即URI,用于识别预定资源,包含在URL中。在这种情况下,URL也是一个端点,因为它是RESTful API与服务用户接触的地方。

查询字符串。URL包括一个查询字符串。查询字符串用于定义参数,这些参数被赋予值。

在接收和验证恳求后,网络服务器将目标资源的数据还原。通常情况下,数据以一种被称为JSON(JavaScript对象符号)的结构返回。JSON以人类可以轻易阅读的可移植格式呈现资源的所有组成部分。

统一接口的原则

统一接口必须遵循以下参数。

  • HATEOAS:超媒体作为应用状态的引擎

    超媒体是RESTful网络服务背后的引擎。这表明超媒体是客户想要理解的所有内容,以识别提供者的答案。

  • 只有客户应用的第一个URI必须被提供给客户。客户端应用程序应该使用超链接持续驱动所有其他材料和活动。
  • RESTful网络服务不需要输入查询语言(IDL),这与其他API不同

媒体类型是一个表示数据格式的名称。媒体类型确定了一个定义,概述了应该如何处理一个描绘。一个使用REST的网络API看起来像超文本。每一个可能被处理的数据项都承载着一个位置,要么直接(如通过链接和身份属性),要么隐含(如从媒体类型描述结构中派生)。

  • 自我描述的信息

    客户端和服务器端之间的每次通信都应该提供足够的数据来执行通信。相应地,从客户端到服务器端的请求需要指定它试图访问的资源以及它的具体目标。

    此外,资源描述必须是自描述性的;用户不必意识到一个资源是一个人还是一个设备。相反,它应该按照连接到帮助的媒体类型进行响应。


    因此,无可争议的是,我们将开发许多独特的媒体类型,通常是每个资源一个媒体类型。每种形式的媒体都规定了一个标准的生产范式。例如,HTML定义了超文本的显示方式以及浏览器如何处理每个组件。

  • 识别资源

    在客户和服务器之间的后方通信中提到的资源,必须使用描述来识别。坚持使用统一资源标识符(URI)系统可以实现这一点。换句话说,从服务器到客户的通信可能包括一个HTML版本的文件和一些信息,而不是来自服务器存储的真实文件。

    消费者可以很容易地理解HTML版本,因为它遵循URI模式。客户必须通过给服务器描述资源最终应该如何出现来修改资源。这将使用户能够建立、检索、修改和删除资源。如果客户有必要的授权来改变数据,服务器应该履行查询。

无状态

通过RESTful API,所有的客户端请求必须是瞬时的。因此,每个查询和响应体包括缔结合同所需的所有数据,使每个连接都是自主的。服务器不会跟踪以前的HTTP请求;它把客户端的每一次请求都当作一个全新的查询。

由于服务器不需要执行任何额外的任务来获取历史数据,无状态传输大大减少了服务器所需的存储量,并增加了响应可接受的可能性。这保证了这些交互的可扩展性:程序员不必担心当他们的软件扩展并发出HTTP请求时,会使用更多的存储或对服务器造成负担。

分层

到目前为止,我们已经将网络API查询定义为直接的客户-服务器交换,尽管这有点过分简化了。在这两个组织之间,往往有更多的服务器。这些平台,或者说层,是为了管理和分散流量,增加保护,以及执行其他各种关键任务。

根据这个概念,在用户和目标服务器之间发送的信息必须以类似的方式进行结构和处理,而不考虑中间存在的层。额外的层应该与客户的互动没有问题。遵守这一规则的程序员可以改变服务器系统而不影响基本的请求-响应过程。

可缓存

当客户浏览网站时,内容被保存在客户的机器上时,就会发生缓存。缓存的材料从内部存储器迅速加载,而不是在用户以后访问该网站时再次从服务器上下载。大多数大型网站使用缓存来减少页面负载,同时节约服务器空间和带宽。

在开发REST API时要考虑数据缓存。服务器给客户的响应应该说明给定的资源是否可以存储以及存储多长时间。

需求中的代码

最后一个REST原则是不必要的。如果有要求,API的响应可以包括供客户使用的软件代码。正因为如此,客户可以在其后台执行客户应用程序或程序。

如果一个API符合这套准则,它就被认为是一个RESTful API。然而,这些准则给了程序员很多自由来修改其RESTful API的功能。REST API与另一种流行的网络API技术--简单对象访问协议不同,它们更加灵活(SOAP)。

端点共识

考虑到这些端点。

  • /user/123\s
  • /user/id/123/s
  • /user/123\s/user/id/123\s
  • /user/?id=123

都是客户端123检索数据的合法方法。当有更复杂的程序时,可能性的数量就会增加。例如,从第51条开始,按相反的顺序,显示10个姓氏以 "A "开头并为该公司工作的人。

最后,它并不关心你如何构造URL;整个RESTful API的统一性很重要。在有许多程序员的庞大软件系统中,这并不容易。RESTful API的修改是不可避免的,但终端的URL决不能被拒绝,因为这样做会导致依赖它们的应用程序停止工作。

REST API的版本管理

对API进行版本管理是防止不兼容的一种常见做法。举个例子,/2.0/user/123取代了/user/123。新旧两个端点都可以继续运作。因此,这迫使过去重要的API需要被维护。以前的版本最终可以退役,但这个过程需要仔细考虑。

REST API认证

任何设备都可以在没有授权的情况下使用查询API下载quip。读取私人信息或允许编辑和删除查询的API不支持这个。与RESTful网络服务在同一域内的客户端程序,与HTTP请求一样,发送和接收cookies的方式。(请注意,在早期的网站中必须为Fetch()指定特权重启选项)。一个API查询可以被验证,以确认一个用户已经登录并拥有所需的权限。

HTTP基本认证。第三方程序必须使用不同的批准方案。一些流行的验证方法是初级验证,用于。

  • HTTP。一个base64编码的用户名:密码字符串作为HTTP批准头的一部分在查询字段中给出。
  • API密钥。通过提供一个RESTful API密钥,该密钥可能有特殊的权限或仅限于一个网站,一个API被提供给第三方应用程序使用。每条信息都在查询字符串或HTTP头中包含密钥。(查询字符串是URL的一个组成部分)。
  • OAuth:在提出任何请求之前,一个客户ID和可能的客户秘密被发送到OAuth服务器以获得一个证书。直到过期为止,OAuth身份将与每个API请求一起传输。
  • JSON中的互联网令牌(JWT)。查询头和响应头安全地传达经过数字签名的用户凭证。JWT使服务器能够加密访问权限,而不需要查询数据库或使用其他认证机制。

使用场景将影响API的认证方式。

  • 有时,第三方程序会像其他登录的客户端一样被处理,具有相同的权限和权利。例如,一个地图API可能为一个请求程序提供两个点之间的指示。它必须验证该程序是一个合法用户,但它不需要验证客户的证书。
  • 在其他情况下,第三方程序要求特定用户提供个人信息,如邮件内容。REST API必须识别客户端和他们的权限,但它们不需要关注调用程序。

REST API的安全性

RESTful网络服务进一步增加了与你的软件互动和影响的方式。即使你的主机不是一个高高在上的黑客目标,一个行为不端的用户也可能每秒提交数百个请求并使其崩溃。本文不涉及安全问题,但涉及标准的最佳程序。

  • 使用HTTPS

  • 采用一个强大的认证机制

  • 可以使用CORS来限制客户对特定区域的调用。

  • 提供必要的能力--也就是说,不要

  • 产生没有必要的DELETE选择;验证所有的Endpoint URL和主体信息。

  • 通过在客户端JavaScript中不受制于API凭证,阻止来自不明部门或IP地址的链接。

  • 异常大的数据包被阻止。

  • 考虑速率限制,来自同一IP地址或API凭证的请求被限制在每分钟N次查询。

  • 具有适当的HTTP状态代码的响应,缓存头的日志查询,以及不成功的调查

API Security

多重请求和不必要的数据

RESTful网络服务的部署有局限性。响应有可能比你要求的信息更多,或者需要多次请求才能获得所有信息。想一想让用户访问创作者和书籍信息的RESTful网络服务;客户端可以。

  • 要求获得前10本书的信息,按购买顺序列出(最畅销的先)。书籍的集合,连同每个作家的ID,都包含在答案中。
  • 为了检索每个作家的信息,最多建立10个/author/id查询。

    对于每一个对父查询的响应,应该产生N个API查询,特点是 "N+1问题"。

如果这是一个频繁使用的情况,RESTful网络服务可能被修改为包括其制作的每本书的所有作家信息,包括姓名、性别、国籍、传记等等。甚至可以提供更多关于他们以前书籍的信息,尽管这样做会大大增加响应负担。可以改变API,使作者信息成为可有可无的。作者详细信息=full,以防止不必要的大答案。API设计者必须支持的选项数量之多可能会让人不知所措。

总结

你现在彻底了解了REST API,REST API是如何运作的,REST API的例子,REST API的用途,架构限制,以及本教程中涉及的其他话题。程序员可能会觉得学习API很困难,令人望而生畏,但无代码平台AppMaster创建了一个新的可访问的REST APIs库,在这里你可以加深对一系列REST APIs的认识,以支持你进一步的专业发展。

在AppMaster,我们努力提高API的可及性和可用性。我们希望你能在你的职业生涯和个人生活中学习、试验并实现使用API软件的好处。为了帮助你更快地设计出更好的网络API,AppMaster改善了协作,并使API生命周期的每个阶段都自动化。继续创造、推进和拓宽你对REST API的理解。

相关帖子

如何开发可扩展的酒店预订系统:完整指南
如何开发可扩展的酒店预订系统:完整指南
了解如何开发可扩展的酒店预订系统,探索架构设计、主要功能和现代技术选择,以提供无缝的客户体验。
从头开始开发投资管理平台的分步指南
从头开始开发投资管理平台的分步指南
探索创建高性能投资管理平台的结构化路径,利用现代技术和方法来提高效率。
如何根据您的需求选择合适的健康监测工具
如何根据您的需求选择合适的健康监测工具
了解如何选择适合您的生活方式和需求的健康监测工具。全面的指南可帮助您做出明智的决定。
免费开始
有灵感自己尝试一下吗?

了解 AppMaster 强大功能的最佳方式是亲身体验。免费订阅,在几分钟内制作您自己的应用程序

将您的想法变为现实