目录[隐藏][展示]
- 1. 你对 REST 的理解是什么?
- 2. REST API 是什么意思?
- 3. URI到底是什么?
- 4、RESTful Web Services的特点是什么?
- 5. REST 的指导原则是什么?
- 6. 提及 REST 支持的 HTTP 方法。
- 7. 描述一致界面的限制。
- 8. 什么是 REST 资源?
- 9. JAX-RS 对您意味着什么?
- 10. AJAX 和 REST 有什么区别?
- 11. 你能列出一些 RESTful Web 服务的缺点吗?
- 12. PUT 和 POST 技术的区别是什么?
- 13. 你如何测试 RESTful Web 服务?
- 14. 描述现实世界中的 REST API。
- 15. 微服务架构是如何工作的?
- 16. 缓存到底是什么?
- 17. 描述有效载荷。
- 18. 区分 SOAP 与 REST?
- 19. 传输层安全协议 (TLS) 可以与 REST 一起使用吗?
- 20. 幂等方法:它们是什么? 它如何应用于 RESTful Web 服务的世界?
- 21. HTTP Basic Authentication 的功能是什么?
- 22. 你认为 GraphQL 是创建微服务架构的最佳选择吗?
- 23.安全和幂等HTTP方法的主要区别是什么?
- 24. JAX-RS API 对 RESTful 根资源类意味着什么?
- 25. Postman 到底是什么,为什么要使用它?
- 26. 如何保证 REST API 的安全?
- 结论
REST 的发展使 API 变得非常容易访问,同时也展现了它们的全部力量和潜力。 REST API 因其面向资源的架构而易于创建和缓存。
此外,一直以来,RESTful API 都是其他重大发展的先驱,例如云计算和基于微服务的设计。
因此,鉴于 REST API 开发人员如何为使用 RESTful 服务的企业提供竞争优势,因此今天对 REST API 开发人员的需求不足为奇。 REST API 是一种流行的设计趋势。
许多 IT 公司希望从 软件开发者 并在技术面试中询问。
以下是一些最典型的 REST API 面试问题,如果你想在 REST API 开发领域工作,这些问题将帮助你为各种公司的面试做好准备。
1. 你对 REST 的理解是什么?
REST 是一种架构范例,用于设计基于超文本传输协议 (HTTP) 的基于 Web 的应用程序。
REST 定义了 Web 服务必须满足的某些标准才能被视为 RESTful。 这些建议可确保使用标准化 HTTP 协议在客户端和服务器之间快速有效地传输请求和资源。
2. REST API 是什么意思?
称为应用程序编程接口的软件到软件链接能够实现其他独立程序之间的通信和数据共享。 例如,新闻网站可以使用 Twitter API 自动发现相关推文并将其整合到新闻故事中。
遵循 REST 原则的 API 称为 REST API,有时也称为 RESTful API。 在 REST API 中,每条数据都作为资源进行处理,并被赋予不同的标准资源标识 (URI)。
例如,Twitter API 使每条推文成为可供客户使用的可检索资源。 用户可以使用 Twitter API 发布推文和执行其他网站任务。
3. URI到底是什么?
A 计算机网络 可以使用 URI 或统一资源标识符来引用资源。 它是一种将一种资源与另一种资源分开的方法。 来源可能在线,也可能不在线。
由于它们的标准结构,URI 可以很容易地连接到各种类型的资源。 资源的位置或名称与字符串一起包含在 URI 中。
URI 由路径、方案、查询和其他元素组成,但不包括协议。
使用协议,URL(统一资源定位器)用于在 Internet 上查找资源或通过它访问资源。
4、RESTful Web Services的特点是什么?
- 客户端-服务器范式是服务的基础。
- 服务可以通过使用 URI 来访问资源。
- 该服务利用 HTTP 协议来获取数据/资源、运行查询和执行其他任务。
- 消息传递是用于在客户端和服务器之间进行通信的方法的名称。
- 这些服务还可以使用 SOAP 服务实现 REST 架构模式。
- 为了减少服务器对相同类型的重复请求的调用,这些服务还采用了缓存的思想。
5. REST 的指导原则是什么?
REST API 必须满足五个条件:
客户端-服务器解耦:客户端和服务器之间只能使用一系列请求和回复进行通信。 只有客户端和服务器能够分别发送请求和应答。 这一直截了当的想法使双方能够相互独立地运作。
统一接口:所有客户端-服务器连接必须有一个统一的协议。 这个 REST 协议是 HTTP。 因为每个应用程序都使用相同的语言请求和发送数据,所以一致的界面使集成更加简单。
无状态:服务器在无状态通信中不保存任何先前请求或应答的记录。 每个请求和回答都提供了完成交换所需的所有详细信息。 无状态通信提高了速度、节省了内存并减轻了服务器的压力。 此外,它还避免了由于数据不完整而导致请求失败的可能性。
分层系统:位于客户端和 API 服务器之间的服务器称为层。 这些额外的服务器执行各种服务,例如检测垃圾邮件和优化速度。 REST 中的层是模块化的,这意味着可以在不影响客户端和 API 服务器之间的通信的情况下添加和删除它们。
可缓存:如果服务器回答表明资源是否可缓存,客户端可以缓存任何资源以提高速度。
按需编码:作为响应,API 可以将可执行的计算机代码传输给客户。 然后,客户端应用程序可以在自己的后端运行代码。
6. 提及 REST 支持的 HTTP 方法。
REST 支持的 HTTP 方法有:
- GET:此方法请求指定 URL 处的资源。 不应包含请求正文,因为它将被忽略。 可以将其缓存在本地或服务器上。
- POST:此方法将数据发送到服务进行处理,服务通常应返回新的或更改的资源。
- PUT:资源在请求 URL 处更新。
- DELETE:资源在请求 URL 处被删除。
- 选项:它标识支持的方法。
- HEAD:返回请求 URL 的元数据。
7. 描述一致界面的限制。
为了将客户端与服务器分开,需要一个一致的接口。
要实现一致的界面,需要以下四个约束:
- 资源识别:客户端请求必须使用标准资源 ID 来识别资源 (URI)
- 使用这些表示进行资源操作:当客户端从服务器获得资源表示时,他们拥有能够更改资源状态所需的所有信息。
- 自描述消息:消息包括接收者理解它们所需的所有元数据和其他信息。
- 超媒体作为应用程序状态引擎:客户端-服务器通信的渠道是超媒体,例如 HTML,客户端不需要特定于 API 的文档来理解服务器的答案。
8. 什么是 REST 资源?
资源是 REST 架构中 RESTful Web 服务的基本组件。 它们包括 API 客户端需要访问的所有关键信息。
任何类型的资源,例如 HTML 页面、图像、视频或 API 活动所需的任何其他内容,都可以通过客户端-服务器系统中的服务器进行访问。
资源由统一资源标识符标识。 文本、JSON 或 XML 都是可接受的资源表示形式。 话虽如此,表示的格式没有限制。
9. JAX-RS 对您意味着什么?
借助用于 RESTful Web 服务的 Java API(通常称为 JAX-RS),在 Java 中创建 RESTful Web 服务更加简单。 开发人员可以使用提供的注释来描述资源和可以对其执行的操作。
10. AJAX 和 REST 有什么区别?
阿贾克斯:
- Ajax 是一组允许动态更新 用户界面 元素,而无需重新加载页面。
- Ajax 删除了客户端和服务器之间的异步通信。
休息:
- REST 需要服务器和客户端之间的通信。
- 资源的利用对于 REST 使用的 URL 结构和请求/响应模式很重要。
11. 你能列出一些 RESTful Web 服务的缺点吗?
由于服务遵循无状态的概念,因此无法保持会话。 (客户端负责在整个会话模拟过程中传递会话 ID。)
安全约束不是 REST 的基础。 使用它的协议继承了安全预防措施。 因此,在采取安全措施(例如集成基于 SSL/TLS 的身份验证)时要小心谨慎,这一点很重要。
12. PUT 和 POST 技术的区别是什么?
PUT:
- PUT 响应没有缓存。
- 幂等(即多个请求将产生相同的结果)
- 请求的有效负载更新或替换目标资源。
POST:
- 幂等非(即多个请求将产生多个相同资源)
- Web 服务器根据预期资源处理请求的有效负载。
- 如果包含适当的缓存控制标头,则可以缓存 POST 回复。
13. 你如何测试 RESTful Web 服务?
RESTful Web 服务测试可以借助许多工具,包括 Swagger 和 Postman。 后者的丰富功能使得检查请求参数(如查询参数、标头和响应标头)成为可能。
Postman 可用于向端点发出请求并显示结果。 并且可以从这些答案中创建 XML 和 JSON。
Postman 和 Swagger 都提供了极其相似的功能。 另一方面,Swagger 还提供端点文档等功能。
14. 描述现实世界中的 REST API。
- 旅行和票务网站可以利用航空公司通过 API 提供的航班时间和定价。
- 为了让地图和导航应用程序(如谷歌地图)使用它们,公共交通机构经常通过 API 实时公开他们的数据。
- 天气应用程序使用交换天气数据的开放 API 来显示天气信息。
- 开发人员可以通过其许多托管 API 访问 Google 地图的地图数据。 开发人员使用这些 API 在他们的应用程序和网站中嵌入动态地图。
15. 微服务架构是如何工作的?
- 各种客户使用各种设备发送请求。
- 在确认客户的身份后,身份提供者会提供安全令牌。
- 客户端请求由 API Gateway 管理。
- 系统的所有材料都保留为静态内容。
- 管理工具检查节点上的服务平衡和任何故障。
- 服务发现有助于发现微服务之间的通信路径。
- 数据中心和代理服务器构成了称为内容交付网络的分散网络系统。
- 远程服务提供远距离信息访问。
16. 缓存到底是什么?
将服务器答案的副本临时保存在某处(例如计算机内存)以便以后更快地访问它的做法称为缓存。
在使用 REST API 时,缓存通过减少服务器为满足请求而必须执行的工作量来提高服务器速度。 由于缓存,使用 API 的应用程序运行得更快,因为它们不必在每次需要资源时都提交新请求。
HTTP 响应标头的 Cache-Control 字段包含有关资源在需要再次访问之前可以被客户端缓存多长时间的信息。
17. 描述有效载荷。
REST 中的有效负载是指 HTTP 响应正文中包含的信息。 客户使用 GET 技术来请求相关数据。
包含推文文本的文档以及将推文放在网站上的任何必要文件都将包含在有效负载中,例如,如果您向 Twitter API 询问特定推文。 此外,可以使用 POST 方法将有效负载包含在 HTTP 请求中。
18. 区分 SOAP 与 REST?
- 与只能处理 XML 的 SOAP 不同,REST 支持更广泛的资源格式,包括 XML、文本、HTML、图片、视频等。
- 当安全性对在线应用程序至关重要时,SOAP 很有帮助。 当事务必须安全完成时,不能使用 REST,因为它不是特别安全。
- 由于 SOAP 只是一种协议,REST 可以在其 Web 服务中使用它,但反之则不行。
- 虽然 REST 只是一种用于开发 Web 服务的架构模式,并遵守某些限制,例如客户端-服务器设置、无状态、可缓存响应、分层系统和一致的接口,但 SOAP 是一种按照特定标准运行的协议,必须严格遵守至。
- REST 使用通用资源标识符 (URI),而 SOAP 使用服务接口向客户端应用程序提供其功能。 REST 的带宽需求比 SOAP 低,因为 SOAP 消息的信息量更大。
19. 传输层安全协议 (TLS) 可以与 REST 一起使用吗?
事实上,我们可以。 REST 客户端和服务器的通信通过 TLS 加密,该协议还为客户端提供了一种验证服务器的方法。
由于它是安全套接字层的替代品,因此它被用于安全通信 (SSL)。 使用 HTTPS 实现 RESTful Web 服务是成功的,因为它与 TLS 和 SSL 有效协作。
REST 继承了它实现的协议的特性,这是这里需要注意的一件事。 因此,安全保护依赖于 REST 使用的协议。
20. 幂等方法:它们是什么? 它如何应用于 RESTful Web 服务的世界?
在URI相同的情况下,一个请求中的一些HTTP方法无论是投递一次还是投递多次,对服务器的影响都是一样的。 幂等技术就是所谓的。
例如,无论使用 GET 方法运行 URI 多少次,服务器总是会遇到相同的结果。 幂等方法包括 GET、PUT 和 PATCH,仅举几例。
幂等 HTTP 方法是 RESTful 使用的一些方法 网络应用. 它们是保证 RESTful Web 服务活动的一致性所必需的。
使用 REST API 的客户可能会出现代码错误,从而迫使 REST API 意外地发出重复请求。 这些调用有可能滥用资源。
21. HTTP Basic Authentication 的功能是什么?
当使用基本身份验证作为 API 的一部分时,用户必须提交用户名和密码,这些用户名和密码由浏览器以“用户名:密码”和 base64 编码的形式连接起来。
在来自浏览器的每个 HTTP 请求中,编码值作为“授权”标头的值传递。 因为凭证只是经过编码,所以建议在发送 HTTPS 请求时使用这种形式,因为它们不安全,如果不使用安全协议,任何人都可以截获。
22. 你认为 GraphQL 是创建微服务架构的最佳选择吗?
微服务和 GraphQL 完美结合,因为 GraphQL 使您的微服务架构对您的客户保密。
在前端,您希望所有数据都来自一个 API,而在后端,您希望将其划分为微服务。 我知道实现两者的最佳技术是使用 GraphQL。
它使您能够将后端划分为微服务,同时仍为每个应用程序提供单个 API 并启用来自各种服务的数据之间的连接。
23.安全和幂等HTTP方法的主要区别是什么?
当通过同一请求调用一次或多次时,幂等方法会产生相同的结果。 PUT 方法是幂等的。
所有安全方法都是幂等的,但并非所有幂等方法都是安全的,因为安全方法不会改变资源。 例如,GET 是安全的,因为它只检索数据而不更改资源。
此外,它是幂等的,这意味着它在调用时总是返回相同的答案。
24. JAX-RS API 对 RESTful 根资源类意味着什么?
Java Enterprise Edition 提供了符合 JAX-RS API 要求的类和接口。 借助 JAX-RS,以 REST 架构风格创建 Java Web 服务变得更加容易。
在 JAX-RS API 中,根资源类只是“普通的旧 Java 对象”或 POJO。 为了实现必要的 Web 资源,他们使用 JAX-RS 注释。
它们要么具有@path 注释,要么它们的至少一个方法具有@path 注释。 它们可以概括为带有处理 API 端点的方法的 Java 类。
25. Postman 到底是什么,为什么要使用它?
一个名为 Postman 的 API 开发工具用于创建、测试和修改 API。 开发人员可以将此工具用于 API 所需的任何功能。 它简化并方便了开发人员的工作。
Postman 可以轻松进行各种 HTTP 查询,包括 GET、POST、PUT 和 PATCH,保存环境以供以后使用,并将 API 转换为多种不同语言的代码。
使用 Postman,API 周期的每个阶段都变得更简单,并且协作得到简化,以加快 API 开发。
此外,它使开发人员能够管理文档、规范、测试用例、流程和 API 目录。
26. 如何保证 REST API 的安全?
由于 REST API 不像 SOAP API 那样使用严格的安全保护措施,因此不应使用它们发送或检索敏感数据。
但是,值得信赖的 REST API 继续集成安全控制,以实现安全可靠的数据传输。
- 身份验证和授权:向 API 发出的每个请求都必须通过这两项检查。 通过身份验证验证客户端的身份和通过授权验证他们有权访问所请求的资源是两个不同的过程。
- 验证:在 API 授予对其资源的访问权限之前,仍必须在身份验证和授权后检查请求中是否存在可能有害的代码。 因此,服务器将对注入攻击开放。
- 验证:在 API 授予对其资源的访问权限之前,仍必须在身份验证和授权后检查请求中是否存在可能有害的代码。 因此,服务器将对注入攻击开放。
- 加密:TLS/SSL 加密保护客户端和服务器之间的连接,防止黑客拦截请求和应答。
- 速率限制技术(例如限制和节流)可保护服务器免受 DDoS 等旨在降级或崩溃的暴力攻击。
- URI 中没有敏感信息:资源的 URI 不应包含任何受保护的数据(例如用户名、密码或身份验证令牌)。
结论
恭喜! 几个基本到复杂的 REST API 面试问题及其各自的解决方案现在触手可及。
现在您已经对如何回答一些典型的 REST API 面试问题有了很好的了解,您可以继续回答面试。 下一步取决于您的目标。
参观 采访系列 与 Hashdork 一起准备面试。
发表评论