所有文章 > 最新动态 > 2023 年你应该知道的 25 个 REST API 面试问题与答案
2023 年你应该知道的 25 个 REST API 面试问题与答案

2023 年你应该知道的 25 个 REST API 面试问题与答案

无论您是当前的网络开发人员还是有抱负的网络开发人员,您都应该熟悉 API 及其工作方式,尤其是 REST APIs- 如果您使用过任何一个软件集成,您很可能使用过其中一种。

在本篇文章中,我们将介绍 25 个重要的 REST API 问题,您在面试网络开发人员职位时应该知道如何回答,其中包括一些宽泛的问题和其他可能需要更深入的技术性回答的问题。那么,让我们开始吧。

初级面试问题及答案

1.什么是 REST?

答:REST 是 “表征状态传输”(Representational State Transfer)的缩写,是一种基于超文本传输协议(HTTP)的架构风格,用于开发基于网络的应用程序。

REST 概述了网络服务被视为 RESTful 所必须遵循的几条准则。这些准则确保使用标准化的 HTTP 方法在客户端和服务器之间轻松高效地发送请求和资源。

2.什么是 REST API?

答:应用程序接口(API)是软件与软件之间的接口,它允许原本独立的应用程序进行交互和共享数据。例如,新闻网站可以利用 X(Twitter)API 自动查找相关推文,并将其纳入新闻文章。

REST API 也称为 RESTful API,是一种遵循 REST 原则的 API。在 REST API 中,所有数据都被视为资源,每个资源都有一个唯一的统一资源标识符(URI)。例如,X API 将每条推文都作为可用资源,可供客户端检索。客户端还可以使用 X’s API在网站上发布推文并执行其他操作。

3.REST API 在现实世界中的例子是什么?

答: 下面是一些使用 REST API 的示例:

  • X 允许发布网站获取推文、用户、推文流等信息。开发人员还可以编写程序,通过 API 而不是网站界面发布推文。
  • 航空公司通过应用程序接口公开航班时间和价格,以便旅游和票务网站使用。
  • 为了显示天气信息,天气应用程序利用共享天气数据的公共应用程序接口。
  • 公共交通服务通常通过应用程序接口实时公开数据,以便地图和导航应用程序(如谷歌地图)使用。
  • 反过来,谷歌地图也提供了多个应用程序接口(API),供开发人员使用其地图数据。开发人员可以利用这些 API 在自己的网站或应用程序中放置动态地图。

4.REST API 使用哪种协议?

答: REST APIs 使用 HTTP 协议与客户端通信。这使得 REST APIs 可以很容易地在互联网上部署,因为 HTTP 与用于向客户端浏览器传送网页的协议相同。

5.什么是资源?

答: 在 REST 中,服务器上每个可访问的内容都被标记为资源。资源是一个对象,具有类型、相关数据、与服务器上其他资源的关系,以及可与之配合使用的方法列表。例如,资源可以是 HTML 或文本文件、数据文件、图像或视频,也可以是可执行代码文件。

资源用 URI 标识。客户端通过在 HTTP 请求中包含 URI 来访问资源。

6.什么是 URI?

答: URI 是统一资源标识符的缩写。在 REST 中,URI 是一个字符串,用于标识网络服务器上的资源。每个资源都有自己独一无二的 URI,在 HTTP 请求中包含 URI 后,客户端就能锁定该资源并对其执行操作。使用 URI 定位资源的过程称为 “寻址”。

URI 的格式如下:

HTTP
<protocol>://<service-name>/<ResourceType>/<ResourceID>

中级面试问题及答案

7.什么是 REST 消息传递?

答: 在 REST 中,消息传递指的是客户端与 API 之间的来回通信。交互总是从客户端向 API 发送 HTTP 请求开始的。API 处理该请求。然后,API 会发回一个 HTTP 响应,给出请求的状态和客户端要求的任何资源。

8.REST 支持哪些 HTTP 请求方法?

答: HTTP 请求方法表示客户端希望 API 对资源执行的操作。REST 的四种主要 HTTP 请求方法是:

  • GET。从服务器请求资源。(请注意,GET 不能修改服务器资源,因为它是一种只读方法)。
  • POST。在服务器上创建新资源。
  • PUT。更新服务器上的现有资源。
  • DELETE。从服务器上删除资源。

此外,您还应该知道两个不太常见的 HTTP 请求:

  • HEAD。请求获取资源的元信息。该请求与 GET 类似,但响应不包括响应体。
  • OPTIONS。读取资源的可能方法列表。

9.POST 方法和 PUT 方法有什么区别?

答:POST 和 PUT 相似,但不完全相同: POST 和 PUT 相似,但并不完全相同。POST 用于在服务器上创建资源,而 PUT 用于用另一个资源替换特定 URI 上的资源。如果在已经有相关资源的 URI 上使用 PUT,PUT 将替换该资源。如果指定的 URI 上没有资源,PUT 将创建一个资源。

此外,PUT 是幂等的,这意味着多次调用它只会得到一个资源。这是因为每次调用都会替换现有资源(如果没有需要替换的资源,则创建一个新资源)。

POST 并非幂等。如果你调用 POST 10 次,服务器上就会出现 10 个不同的资源,每个资源都有自己的 URI。这也意味着 POST 响应是可缓存的,而 PUT 响应则不可。

10.什么是 CRUD?

答: CRUD代表 “创建、读取、更新、删除”。这是可以通过 REST API 对数据库执行的四种基本操作。每个操作对应一种 HTTP 请求方法:

  • 创建 = POST
  • 读取 = GET
  • 更新 = PUT
  • 删除 = DELETE

这不是一个最优雅的缩写,但它很有用。

11.HTTP 请求的主要部分是什么?

答: HTTP 请求由客户端发送到 API。它们请求数据或在服务器上执行某些操作。在 REST 中,HTTP 请求有五个主要组成部分:

  • 起始行: 表示申请的预期行动,包括
    • 请求方法,表示对资源执行的 HTTP 请求方法(即 GET、POST、PUT、DELETE)。
    • 标识服务器上所请求资源的 URI
    • 使用的 HTTP 版本,表示 API 应使用哪个版本做出响应。
  • HTTP 请求头。列出请求的元数据,如用户代理、客户端接受的文件格式、请求正文的格式、语言、缓存偏好等。

12.HTTP 响应的主要部分是什么?

答: HTTP 响应由 API 发送给客户端。它们通知客户端所请求的操作已完成(或未完成),并交付所请求的任何资源。HTTP 响应有四个主要部分:

  • HTTP 版本。使用的 HTTP 版本。
  • 状态行。用 HTTP 响应状态代码表示请求的状态。
  • HTTP 响应头。列出有关响应的元数据,如日期、服务器、用户代理、返回资源的文件格式、缓存信息等。
  • HTTP 响应正文。包含客户端请求的资源数据,也称为有效载荷。

13.在使用 REST API 时,你可能会看到哪些常见的 HTTP 响应状态代码?

答: HTTP 响应状态代码告诉客户端所请求操作(GET、POST 等)的结果。您将在 HTTP 响应中看到的一些常见代码包括:

  • 200 OK.请求成功。
  • 201 Created.请求成功,创建了一个资源。
  • 400 Bad Request. 由于请求中的错误(如错字或数据缺失),请求未被满足。
  • 401 Unauthorized. 由于客户端未通过身份验证或未被授权访问所请求的资源,因此请求未被满足。
  • 403 Forbidden.请求未被满足,因为客户端已通过身份验证,但未被授权访问所请求的资源。
  • 404 Not Found. 由于服务器无法找到所请求的资源,因此请求未被满足。
  • 500 Internal Server Error. 由于服务器出现意外问题,请求未被满足。(另请参阅:500 内部服务器错误: 它们是什么以及如何修复)。
  • 502 Bad Gateway.由于上游服务器的响应无效,请求未被满足。
  • 503 Service Unavailable. 由于维护、超载或其他临时干扰,服务器无法处理请求。

14.哪些标记语言主要用于表示 REST API 中的资源?

答: 在 REST APIs 中,XML(可扩展标记语言)和 JSON(JavaScript Object Notation)是表示资源的两种最常用语言。

15. REST 的原则是什么?

答: REST API 必须遵守五项要求:

  • 客户端与服务器解耦。客户端和服务器只能通过一系列请求和响应进行交互。只有客户端才能发出请求,只有服务器才能发送响应。这一简单的原则允许双方独立运行。
  • 统一接口。 客户端和服务器之间的所有通信都必须遵循相同的协议。 对于 REST 来说,这个协议就是 HTTP。 统一的接口可以简化集成,因为每个应用程序都使用相同的语言来请求和发送数据。
  • 无状态。 在无状态通信中,服务器不存储任何有关过去请求/响应的信息。 每个请求和响应都包含完成交互所需的全部信息。 无状态通信可减少服务器负载、节省内存并提高性能。 它还消除了因数据丢失而导致请求失败的可能性。
  • 分层系统。 分层是指位于客户端和 API 服务器之间的服务器。 这些附加服务器执行各种功能,如识别垃圾邮件和提高性能(另请参阅:什么是 CDN?) 在 REST 中,层是模块化的,可以添加或删除,而不会影响客户端与 API 服务器之间的信息。
  • 可缓存。 服务器响应会显示资源是否可缓存,这样客户端就可以缓存任何资源以提高性能。

此外,REST 还包括一个可选条件:

  • 按需代码。 应用程序接口可在其响应中向客户端发送可执行的计算机代码。 这样,客户端应用程序就可以在自己的后端运行代码。

16.无状态 API 意味着什么?

答: 无状态是 REST 架构的关键原则之一。 在无状态通信中,服务器不会存储任何有关以前通信的信息。  换句话说,客户端和服务器不知道对方的状态。

每个请求和响应都是一次新的交互,每个请求都包含服务器作出成功响应所需的一切信息。

17. 什么是缓存?

答: 缓存是一种将服务器响应的副本暂时存储在某个位置(如计算机内存)以便将来更快检索的方法。

在使用 REST API 时,缓存可以减少服务器为满足请求而必须进行的工作,从而提高服务器性能。 缓存还能让使用 API 的应用程序运行得更快,因为它们不需要在每次需要资源时都发送新请求。

资源的缓存持续时间(即在再次检索资源之前,客户端可以缓存该资源多长时间)在 HTTP 响应标头的 Cache-Control 字段中指定。

18. 什么是有效载荷?

答: “有效载荷 “是指在 GET 或 POST 请求中,HTTP 请求和/或响应信息正文中的数据。

例如,如果您从 X API 请求一条特定的推文,则有效载荷包括包含推文文本的文档以及在页面上呈现推文的任何相关文件。

Payload 也可以通过 POST 方法包含在 HTTP 请求中。 如果你想通过 X 的 API 发布一条推文,那么在 POST 请求中发送的推文文本就是有效载荷。

无状态简化了客户端与服务器的交互,因为服务器不依赖过去的请求来处理未来的请求,因此不需要消耗空间和资源来存储这些请求的数据。

19.REST 有哪些好处?

答: 到目前为止,REST 是构建网络 API 的最常用方法。 以下是一些原因:

  • REST 以 HTTP 为基础,与现有的网络基础设施相匹配,因此网络应用程序很容易实施。
  • REST 使用 XML 和 JSON 等简单的网络技术,易于学习。
  • 由于 REST 通信是无状态的,因此客户端和服务器是解耦的。 这意味着集成具有可扩展性,易于长期构建和管理。
  • REST 架构非常灵活,足以适应各种使用情况。
  • REST 是一种轻量级架构。 使用 REST 构建的应用程序通常比使用其他类型 API 构建的应用程序更快。
  • 使用 API 测试工具在浏览器中测试 REST 非常简单。

20. REST 和 AJAX 有什么区别?

答:  Asynchronous JavaScript 或 AJAX 是一套用于网络应用程序的网络开发技术。 其核心是,AJAX 允许网页向服务器发出请求,并在无需刷新的情况下更新页面界面。

AJAX 客户端可能会在请求中使用 REST API,但 AJAX 并不一定只能使用 REST API。 REST API 可以与任何客户端通信,无论该客户端是否使用 AJAX。

与使用 HTTP 请求和响应进行信息传递的 REST 不同,AJAX 通过 JavaScript 内置的 XMLHttpRequest 对象向服务器发送请求。 服务器响应由页面的 JavaScript 代码执行,以更改页面内容。

专家面试问题及答案

21.REST 有哪些主要特点?

答: 如果要求你指出 REST API 与其他 API 不同的主要特点,以下是一些要点:

  • REST 使用 HTTP 协议进行通信。
  • REST 通过 URI 提供服务器资源。每个资源都有一个唯一的 URI。
  • REST 是无状态的,这意味着服务器不会存储过去与客户端通信的信息。
  • REST 使用 GET 从服务器检索资源,而其他网络服务方法使用 POST。

22. REST 有哪些缺点?

答: 无状态是 REST 的优点,但有时也可能是缺点。 REST 不保留状态。 换句话说,服务器不会保留过去交互的记录。 如果需要保存状态,则由客户端负责。

此外,REST 的安全措施不如 SOAP 严格,因此开发人员需要谨慎,只能使用合法、信誉良好的提供商提供的 API。 这也使得 REST 成为在服务器和客户端之间发送机密信息的糟糕选择。

23. 如何测试应用程序接口?

答: 有许多软件工具都是为测试 RESTful APIs 而设计的–Postman、JMeter 和 Katalon Studio 就是其中的几种。测试过程通常包括从测试工具发送各种请求,并监控 API 的响应情况。许多测试工具还支持自动测试,让您可以快速运行许多不同的场景。

要进一步了解 API 测试的工作原理以及您可以运行哪些类型的测试,请参阅我们的 API 测试指南。

24. REST 和 SOAP 有什么区别?

答: REST 和 SOAP(简单对象访问协议)是构建应用程序接口的两种不同方法。 以下是它们之间的主要区别:

  • SOAP 是用于构建安全应用程序接口的严格协议。REST 不是一种协议,而是一种由一系列指导原则决定的架构风格(见问题 15)。
  • SOAP APIs 相比,REST APIs 的构建更简单、更轻量级,速度通常也更快。
  • SOAP APIs 被认为比 REST APIs 更安全,尽管 REST APIs 仍然可以实现安全功能,使其具有合理的安全性。
  • REST 允许缓存响应,而 SOAP 不允许。
  • SOAP 以 XML 格式对数据进行编码。REST 允许以任何格式对数据进行编码,但最常用的是 XML 和 JSON。

25. 如何保证 REST API 的安全?

答: REST API 不像 SOAP API 那样采用严格的安全措施,因此不应被用来发送或检索敏感信息。 不过,优秀的 REST API 仍会采取安全措施,以确保数据传输的安全性和可靠性。

  • 身份验证和授权。对应用程序接口的所有请求都应进行身份验证和授权。认证是验证客户身份的过程,授权是确认客户有权限访问所请求的资源。
  • 验证。经过身份验证和授权后,在 API 允许访问其资源之前,仍需对请求进行扫描,以发现潜在的恶意代码。否则,服务器很容易受到注入攻击。
  • 加密。TLS/SSL 加密可确保客户端与服务器之间的连接安全,防止攻击者截获请求和响应。
  • 速率限制。配额和节流等速率限制方法可防止诸如 DDoS 等试图降低服务器速度或使服务器崩溃的暴力攻击。
  • URI 中不包含敏感信息。受保护信息(如用户名、密码或身份验证令牌)不应出现在资源的 URI 中。

有关更深入的解释,请参阅我们关于 API 安全性的文章。

现在你来做 REST

如今,REST API 已经非常普遍,任何软件开发人员至少都应该熟悉其概念,最好还能有一些使用 REST API 编写应用程序的经验。

如果可以的话,请在回答时讲述您使用 REST API 的经历。 这表明你不仅掌握了相关知识,还在实际工作中熟悉了这项强大的技术。

原文链接:https://blog.hubspot.com/website/rest-api-interview-questions

#你可能也喜欢这些API文章!