paint-brush
25 个关键 REST API 面试问题及答案经过@vshashkin
1,047 讀數
1,047 讀數

25 个关键 REST API 面试问题及答案

经过 Valentin Shashkin11m2024/06/19
Read on Terminal Reader

太長; 讀書

本文介绍了 25 个关键 REST API 问题,帮助技术专家准备面试并提高技能,涵盖理论概念和实际任务。
featured image - 25 个关键 REST API 面试问题及答案
Valentin Shashkin HackerNoon profile picture
0-item


软件开发行业中,集成在应用程序设计中起着关键作用。其中一项主要技术是REST API 。了解 REST API 是每位技术专家的重要技能。在本文中,我们将介绍 25 个 REST API 问题,这些问题将帮助您准备面试并提高您的技能。祝您阅读愉快!


首先,面试官通常会把 REST API 的问题分为理论和实践两部分。首先,他们会问 2-3 个关于术语和 HTTP 请求方法的理论问题,然后你会收到一个关于编写请求的实践任务。


本文包含常见的理论问题,我计划在下一篇文章中发布与 REST API 相关的实际任务示例。我们事先不知道您在面试中会遇到什么问题,但我相信在研究我们的典型问题列表的过程中,您可能会更深入地了解该主题,并无论如何提高您对 REST API 的了解。


现在,让我们从简单到复杂,从基本术语开始,然后继续讨论更复杂问题的部分。


1.什么是 REST?

答:提到 REST 时,有三个术语通常被认为是同一件事,但这并不完全正确。这些术语是 REST、REST API 和 RESTful API。现在将有一个关于 REST 的答案,该术语代表表述性状态转移,是一种基于 HTTP 协议(超文本传输协议)的架构风格,用于开发具有前端和/或与外部系统集成的应用程序。REST 描述了设计的 API 服务应遵循的准则。这些原则确保使用 HTTP 在客户端和服务器之间传递请求。


2.什么是 REST API?

答案:API 是一种编程接口,允许各个应用程序进行通信和交换数据。例如,食品配送应用程序可以使用 Google Maps API 来跟踪快递员的位置并将其显示在地图上。REST API 是一种遵循 REST 原则的 API,将所有数据视为资源,每个资源都由唯一的统一资源标识符 (URI) 表示。


3.什么是 RESTful API?

答:RESTful API 是根据 REST 规则(或者也可以说“原则”)设计的 API。换句话说,REST API 和 RESTful API 之间的区别是术语上的。第一种情况是指一组 REST 规则,第二种情况是指遵循 REST 规则实现特定 API。术语 RESTful API 经常被替换为 REST API 甚至 REST,纯粹是为了简洁起见。当系统分析师在应用程序图上绘制标有 REST 的箭头时,它们指的是 RESTful API。


4.REST 的两个主要原则是什么?

答:REST API 请求必须遵循两个基本原则: 客户端与服务器分离:客户端与服务器之间的交互以请求和响应的形式进行。只有客户端可以发出请求,只有服务器可以发送响应,彼此独立工作。 单一协议:客户端与服务器之间的交互必须使用单一协议进行。对于 REST,此协议是 HTTP。


5.你还知道 REST 的哪些其他原则?

答:您至少可以说出另外 4 个原则。 REST API 请求不会在服务器上存储状态,并且可以穿过服务器层并被缓存。您还可以在服务器响应中向客户端发送可执行代码。 服务器无状态:服务器不存储有关过去请求/响应的任何信息。每个请求和响应都包含完成交互所需的所有信息。无状态通信可减少服务器负载、节省内存并提高性能。 分层系统:客户端和 API 服务器之间可以以层的形式添加其他服务器以执行不同的功能。在基于 REST 原则构建的系统中,层是模块化的,可以添加和删除而不会影响客户端和服务器之间的通信。 可缓存性:服务器的响应指示其资源是否可缓存,以便客户端可以缓存任何资源以提高性能。 按需代码:服务器可以在其响应中向客户端发送可执行代码以在客户端应用程序内执行。


6.什么是资源?

答:在 REST 中,服务器端的每个可访问对象都被指定为资源。资源是具有类型、与之关联的数据、与服务器上其他资源的关系以及可用于处理它的方法列表的对象。例如,资源可以是 HTML 或文本文件、数据文件、图像或视频或可执行代码文件。资源由统一资源标识符或 URI 标识。客户端通过在 HTTP 请求中使用其 URI 来访问资源。


7.什么是 URL?

答案:URI 代表统一资源标识符。这是一个用于标识服务器上资源的字符串。每个资源都有自己独特的 URI,当包含在 HTTP 请求中时,客户端可以访问该资源并对其执行操作。通过 URI 引用资源的过程称为“寻址”。


8.什么是 CRUD?

答案:CRUD 代表“创建、读取、更新、删除”。这些是可以通过 REST API 对数据库执行的四个主要操作。每个操作都有自己的 HTTP 请求方法:

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


9. 服务器响应中的payload是什么意思?

答:HTTP 响应有效负载是指客户端请求的资源数据。这也简称为“HTTP 响应有效负载”。此数据可以是 JSON、XML、HTML、图像、文件等,具体取决于服务器提供的具体内容。


10.什么是 REST 消息传递?

答:REST 中的消息传递是指客户端和服务器之间的消息交换。通信总是从客户端向服务器发出 HTTP 请求开始。服务器处理此请求,然后发回 HTTP 响应,指示请求的状态以及客户端请求的任何资源。


11.REST 中的消息代理是什么?

答:在 REST 上下文中,“消息代理”一词是一种中间件,用于在分布式应用程序中的各个组件或系统之间传递消息。代理可以在各个系统模块之间提供异步数据交换、消息排队和消息处理。


消息代理可用于管理异步操作或发送通知。消息代理不是原生 REST 元素,因为... REST 专注于使用 HTTP 请求在客户端和服务器之间进行同步通信。


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

答:HTTP 请求方法指定服务器将对资源执行的所需操作。在 REST 中,从客户端向服务器发出 HTTP 请求的主要方法有四种:


  • GET:从服务器请求资源,此方法是只读的。
  • POST:在服务器上创建新资源。
  • PUT:更新服务器上现有的资源。
  • DELETE:从服务器删除资源。


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

答案:POST 用于在服务器上创建资源,而 PUT 用于用另一个资源替换特定 URI 上的资源。如果对已具有关联资源的 URI 使用 PUT,PUT 将替换它。如果指定的 URI 上没有资源,PUT 将创建一个。PUT 是幂等的,这意味着多次调用它将只创建一个资源。发生这种情况是因为每次调用都会替换现有资源(如果没有要替换的资源,则创建一个新资源)。POST 不是幂等的。例如,如果您调用 POST 10 次,则服务器上将创建 10 个不同的资源,每个资源都有自己的 URI。虽然很少使用,但 POST 响应可以缓存,而 PUT 响应不能。POST 请求通常被认为是不可缓存的,但当它们包含有关数据“新鲜度”的明确信息时,它们可以被缓存。更详细的答案是,如果数据是“新鲜的”并且设置了 Content-Location (en-US) 标头,则可以缓存 POST(或 PATCH)请求的响应,但这很少实现。因此,应尽可能避免 POST 缓存。


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

答案:在 REST 中,HTTP 请求有以下基本组成部分:对资源发出的请求方法(即 GET、POST、PUT、DELETE)。标识服务器上所请求资源的 URI。HTTP 版本 - 即服务器响应中应包含哪个版本。HTTP 请求标头包含有关请求的元数据,例如用户代理、客户端接受的文件格式、请求正文格式、语言、缓存首选项等。HTTP 请求的正文,它包含与请求相关的所有数据。仅当请求使用 POST 或 PUT 方法更改服务器上的数据时,这才是必要的。


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

答案:HTTP 响应由服务器发送到客户端。它们通知客户端请求的操作已完成(或未完成)以及已交付任何请求的资源。HTTP 响应有四个主要组成部分:使用的 HTTP 版本。带有请求状态和 HTTP 响应状态代码的状态栏。带有有关响应的元数据的 HTTP 响应标头,包括时间、服务器名称、用户代理、返回的资源文件格式、缓存信息。包含有关客户端请求的资源的数据的 HTTP 响应主体


16. 说出至少 3 个成功 HTTP 服务器响应的代码

答:请求成功处理后,服务器返回以下操作状态码:

  • 200 OK:请求已成功完成。
  • 201 Created:请求成功,资源已创建。
  • 202 Accepted:此状态表示服务器已接受客户端的请求,但尚未完成处理。处理可以是异步的。


17. 重定向请求时,至少列出 4 个服务器 HTTP 响应代码

答:服务器在重定向请求时返回以下状态代码:

  • 301 永久移动:此状态告诉客户端,请求的资源已永久移动到另一个 URL,客户端必须访问新的 URL 才能访问该资源。
  • 302 Found:此状态表示资源已被临时移动到另一个URL,客户端应该暂时使用新的URL。
  • 307 临时重定向:与302类似,但客户端在访问新的URL时必须使用相同的请求方法。
  • 308 永久重定向:与 301 类似,但客户端在访问新的 URL 时必须使用相同的请求方法


18. 说出至少 4 种不成功的 HTTP 服务器响应代码。

答:请求不成功时,服务器返回以下代码:

  • 400 错误请求:由于请求中存在错误(例如拼写错误或缺少数据),因此请求未完成。
  • 401 未授权:请求未完成,因为客户端未经过身份验证或没有权限访问所请求的资源。
  • 403 禁止:请求未完成,因为客户端已经过身份验证,但无权访问所请求的资源。
  • 404 Not Found:请求未完成,因为服务器找不到所请求的资源。


19.说出至少 3 个服务器错误代码。

答:当服务器出现错误时,服务器返回以下代码:

  • 500 内部服务器错误:由于服务器出现意外问题,请求未完成。

  • 502 错误网关:由于上游服务器的响应不正确,请求未完成。

  • 503 服务不可用:由于维护,过载或其他临时干扰,服务器无法处理请求。


您可以在此处找到最常见的 HTTP 代码列表




20. REST 和 GraphQL 有什么区别

答:GraphQL 是一种查询语言,允许客户端仅查询所需的数据。在 GraphQL 中,客户端定义其想要接收的数据的结构和格式,服务器根据该请求返回数据。关键区别在于 REST 对每个资源都有固定的请求和响应格式,而 GraphQL 允许客户端定义其请求并仅获取所需的信息,从而使其使用起来更高效、更灵活。


21.REST 和 SOAP 有什么区别?

答:REST 和 SOAP(简单对象访问协议)是构建 API 的两种方法。它们之间有 3 个主要区别:

  • SOAP 是用于构建安全 API 的严格协议。REST 不是一种协议,而是一种由一组称为 REST 原则的准则决定的架构风格。- REST API 比 SOAP API 更易于构建、更轻量且通常更快。
  • SOAP API 被认为比 REST API 更安全,尽管 REST API 仍然可以实现安全功能以使其非常安全。 - REST 允许缓存响应,而 SOAP 则不允许。
  • SOAP 以 XML 格式对数据进行编码。 - REST 允许您以任何格式对数据进行编码,尽管 XML 和 JSON 是最受欢迎的。


22.REST 和 AJAX 有什么区别?

答:异步 JavaScript 或 AJAX 是一组用于 Web 应用程序的 Web 开发技术。从本质上讲,AJAX 允许网页向服务器发出请求并更新页面界面,而无需更新整个页面。

AJAX 客户端可以在其请求中使用 REST API,但 AJAX 不必只与 REST API 配合使用。REST API 可以与任何客户端通信,无论它是否使用 AJAX。

与使用 HTTP 请求和响应来交换消息的 REST 不同,AJAX 使用 JavaScript 内置的 XMLHttpRequest 对象向服务器发送请求。服务器响应由页面的 JavaScript 代码执行以更改其内容。


23. REST API 开发的“契约优先”方法是什么?

答:REST API 开发的契约优先方法是一种在实际开发开始之前创建和定义 API 规范和契约的方法。此契约是一份重要文档,它定义了客户端如何与 API 交互以及从各种请求中获得的预期结果。


24. Contract First 有哪些好处?

回答:合同优先方法有以下优点:

  • 明确的 API 定义:API 规范和契约定义了 API 应如何与客户端交互。
  • 降低风险:与客户进行初步合同批准有助于降低误解和未能满足 API 开发预期的风险。
  • 改进的文档:合同文本通常作为API的文档,使其更易于使用和集成。


25. REST API 开发的 Code First 方法是什么?

答案:REST API 开发的 Code First 方法是一种方法,其中首先开发 API 功能,然后根据该功能自动生成 API 规范。Code First 方法的特点是开发人员专注于编写 API 逻辑,并使用允许他们根据该逻辑自动创建文档和规范的工具。


一般情况下,Code First 和 Contract First 两种方法可以在同一个 API 开发项目中结合使用。在这种情况下,Code First 用于快速原型设计,然后使用 Contract First 来正式化契约。


我希望本文能够帮助您准备面试或更新有关 REST API 的知识。