40个常见的REST API面试问题和答案[2023]

API代表应用程序编程接口。它作为应用程序访问其他应用程序的资源的入口。

使用API的优点是提供对第三方应用程序的访问权限,以便它们无法访问您的应用程序的全部数据。它们只能访问您通过API公开的数据。

想要访问数据的应用程序或用户称为客户端,提供数据的应用程序称为服务器

API在今天的每个软件架构中广泛使用。如果您申请前端、后端、全栈或网络工程角色,那么您将被问很多关于API的问题。

话虽如此,让我们来探讨一些关于REST API最常见的面试问题。

什么是REST?

答案:REST是一种定义API工作约束的架构设计。遵循REST原则的API被称为RESTful API。REST代表表现层状态转移

它不是一种协议或标准,而是一种可以用多种方式实现API的架构。它为开发人员提供了高度的灵活性和自由,因此被广泛用于开发API。以下是REST架构的一些原则:

  • 客户端与服务器的分离:在RESTful API中,客户端除了通过URI(统一资源标识符)请求数据之外,不应以任何其他方式影响服务器。同样,服务器不应以任何方式修改客户端的内容。
  • 无状态性:当进行两个独立的请求时,它们不知道彼此的存在。换句话说,请求是无状态的,不维护状态。如果请求被满足,它就会简单地终止。每个请求都与其他请求隔离。
  • 分层架构:客户端或服务器不知道请求是直接发送到原始源还是中介应用程序。它们只关心对请求的响应。
  • 缓存:数据或响应可以在客户端和服务器端进行缓存,以提高性能和可伸缩性。如果对特定资源频繁请求,则可以缓存该请求的响应,并在需要时使用。

REST的一些关键特性是什么?

答案:REST的关键特性或特点包括:

  • 灵活性:您可以从一个服务器切换到另一个服务器,而不会改变任何内容,因为API将为特定请求发送相同的响应。此外,您可以为不同类型的数据添加任意数量的端点。
  • 可伸缩性:由于响应被保存以供以后使用,缓存改善了可伸缩性。它减少了服务器的负载,并减少了网络流量。
  • 授权:通过授权头部,您可以指定服务器用于授权请求的凭据。
  • 无状态性:这是REST最重要的特性,因为它防止请求了解其他请求的情况。请求是隔离的,并在完成后立即终止。

REST架构中的资源是什么?

答案:资源是进行不同操作的实体,例如检索、更新或删除。它们是REST架构的基本构建块。

例如,如果您考虑一个在线电子商务商店,产品、用户以及元数据都被视为资源,因为可以对它们进行操作。资源可以通过API传输到另一个应用程序。

提到一些REST API的优缺点。

答案:REST API的优点如下:

  • 实现简单。
  • 资源可以轻松处理。
  • 由于客户端-服务器架构,具有可扩展性。
  • 支持多种数据传输媒体类型,如XML和JSON。

其缺点如下:

  • 无法在请求之间保持状态。
  • 由于分层架构,无法知道资源的真正来源。
  • 不适用于复杂的查询或请求。

定义REST模板。

答案:REST模板是在Spring框架中用于访问REST API的实用工具或客户端。它基本上隐藏了您可能需要编写的样板代码,以便从REST API请求资源。

什么是RESTful?

答案:RESTful API或服务是实现REST(表征状态转移)架构风格并使用HTTP等协议的接口。

什么是RESTful Web服务?

答案:RESTful Web服务是为在Web上最佳运行而构建的。表征状态转移(REST)是一种架构风格,如果应用于Web服务,则会引入一些约束,如统一接口、分层架构和无状态性,从而产生性能和可伸缩性等理想性质,使服务在Web上最佳运行。

如何测试RESTful Web服务?

答案:要测试RESTful Web服务,您可以使用Postman或Thunder Client等REST客户端查询要测试的Web服务。然后,在收到响应时,理解响应;这是关键部分。

如果要测试具有许多端点的复杂API,则可能需要分解测试并执行unit testing单元测试、集成测试、性能测试和端到端测试。

提到RESTful Web服务的一些特点。

答案:RESTful Web服务的一些关键特点包括:

  • 支持JSON和XML等多种媒体类型。
  • 可扩展性
  • 客户端与服务器的隔离
  • 灵活性

定义RESTful根资源类。

答案:根资源类是“普通的Java对象”(POJO),要么使用@Path进行注释,要么至少有一个使用@Path或请求方法指示器(例如@GET@POST@PUT@DELETE)进行注释的方法。

什么是URI?

答案:URI代表统一资源标识符。它是用于定位或识别API或服务的资源的字符序列。它使用资源的名称或位置来标识它,但不依赖于特定的方法或技术。

REST中的无状态是什么意思?

答案:无状态指的是应用于API的一种约束,其中任何两个请求都不知道彼此的情况。换句话说,请求的状态不会被维护。如果请求被满足,它在收到响应后简单地终止。

什么是JAX-RS?

答案:JAX-RS是一个Java API,使您能够在Java中开发使用REST架构的应用程序。这个API使得在Java中开发REST应用程序变得容易。

JAX-RS API中的关键注释是什么?

答案:JAX-RS中的注释由开发人员用于修饰Java类,以定义可以对这些资源执行的资源和方法。JAX-RS API的一些关键注释包括:

  • @GET:用于在HTTP中进行GET请求。
  • @POST:用于在HTTP中进行POST请求。
  • @Path:指的是Java类的相对路径。
  • @QueryParam:指的是URI或URL的查询参数。

JAX-RS API的一些关键特性是什么?

回答:JAX-RS的特性包括:

  • 客户端缓存
  • 服务器端缓存
  • 查询字符串自定义
  • 运行时注解

JAX-RS应用程序如何配置?

回答:JAX-RS应用程序至少包含一个打包在WAR文件中的资源类。应用程序的资源对请求作出响应的基本URI可以通过以下两种方式之一进行设置:

  • 在WAR中的javax.ws.rs.core.Application的子类中使用@ApplicationPath注解
  • 在WAR的web.xml部署描述符中使用servlet-mapping标签

JAX-WS和JAX-RS是什么?

回答:JAX-WS是用于使用基于XML的消息协议SOAP(简单对象访问协议)开发API的Jakarta XML Web Services API。

另一方面,JAX-RS是一个Java API,用于使用REST架构创建Web服务。

HTTP状态码是什么?

回答:状态码是服务器向客户端发送的响应状态的一种方式。它们存在于服务器发送的响应头中。

通过使用状态码,客户端能够判断请求是否失败或已完成,或者响应是否存在问题。

以下是HTTP的一些常见状态码:

  • 200 – 代表”OK”关键字。意味着请求已被完成,响应正常。
  • 404 – 代表”Not Found”。意味着服务器上不存在资源或端点。
  • 500 – 代表”Internal Server Error”。通常在服务器无法生成正确响应或出现未明确抛出的错误时发生。
  • 503 – 代表”Service Unavailable”。意味着当前服务器无法处理任何请求,可能是因为它无法正常工作或由于请求过载。也可能在服务器维护时发生。

HTTP方法是什么?

回答:HTTP方法用于对API的特定资源执行某种类型的操作。例如,如果您想从电影集合API中获取电影列表,则可以使用HTTP提供的GET方法。如果您想更新数据,则可以使用HTTP提供的POST方法。

常用的HTTP方法如下:

  • GET:使用GET请求应仅获取数据。
  • POST:通过向服务器发送新的更新后的资源来更新资源。
  • DELETE:删除指定的资源。
  • PATCH:部分修改资源。

HTTP基本身份验证如何工作?

回答:认证是一种验证客户端真实性以维护数据安全性的过程。在HTTP中,认证通过由客户端发送的Authorization Header来进行。

Authorization Header包含客户端的用户名/ID和密码,然后由服务器进行验证并授予访问权限。

这里需要注意的一件重要事情是,在使用HTTP身份验证时,传递凭据的通道应该是加密和安全的。

您可以使用SSL层来保护通道,这一层已集成到HTTPS中。因此,在处理凭据时,建议使用HTTPS而不是简单的HTTP。

HTTP请求的核心组件是什么?

答案:HTTP请求由以下组件组成:

  • 请求行:它是任何请求中的第一行,包含HTTP方法、路径或端点以及HTTP版本号。
  • 头部:HTTP头部用于提供请求的元数据。
  • 正文(可选):该组件仅出现在某些请求方法中。对于GET请求不需要,但对于POST请求需要。它是请求的实际信息。

HTTP响应的核心组件是什么?

答案:HTTP响应由以下组件组成:

  • 状态:它指的是服务器发送的HTTP状态代码。
  • 头部:与请求类似,响应也有其相应的头部,提供有关响应的有用信息。
  • 消息:这是服务器发送给客户端以请求特定资源的实际数据。

REST和AJAX之间的区别是什么?

答案:AJAX是一个客户端,通过它可以访问RESTful API。它用于使用JavaScript发送异步请求。

REST,或表述性状态转移,是一种可用于创建RESTful API的架构。简而言之,要发送HTTP请求,可以使用作为客户端的AJAX,但如果要实现RESTful API,则必须使用REST架构。

SOAP和REST之间的区别是什么?

答案表述性状态转移(REST)是一种具有最小约束的用于创建API的架构。简单对象访问协议(SOAP)是一个具有实施API的严格要求的协议。

与SOAP相比,REST更灵活且易于使用。SOAP使用基于XML的消息传递,而REST可以使用许多数据传输类型,例如JSON、XML等。与SOAP相比,REST更轻量级和快速。

SOAP Web服务具有内置的安全性,这是使用SOAP而不是REST的优点之一,但增加的功能也使其使用起来更复杂和繁重。

PUT和POST之间的区别是什么?

答案:POST是一种向服务器发送一些数据的HTTP请求方法。如果为特定资源发送多个POST请求,则可能对数据产生副作用。例如,如果要将文章添加到集合中,如果进行多个POST请求,将添加多个文章到集合中,导致冗余文章。

PUT是一种向服务器发送数据的HTTP请求方法,但只更新数据一次。如果为特定资源发送多个PUT请求,不会产生副作用,数据将只添加一次。在PUT中,如果资源不存在,它将创建一个新资源;如果资源存在,它将更新现有资源。

PUT是幂等的,而POST不是。

什么是有效载荷?

答案:在REST API中,有效载荷只是从客户端发送到服务器的请求主体。它是您要发送到服务器并获取响应的数据。

在创建URI时,需要遵循哪些最佳实践?

答案:在设计URI时需要牢记以下关键要点:

  • 避免使用文件扩展名
  • 所有URI保持一致
  • 将URI划分为域和子域,针对不同的资源集
  • 应使用连字符或下划线来分隔URI中嵌入的句子中的单词
  • 应使用正斜杠来表示资源的层次结构
  • 使用适当的编码对URI进行编码
  • 尽量使URI易读

什么是幂等方法?

答案:幂等的HTTP方法在发送多个相同请求时对服务器具有相同的影响。例如,如果您对特定资源发送多个相同的DELETE请求,每个请求都不会更改资源;它将像只发送了一个请求一样进行更新。

一些幂等方法包括:

  • PUT
  • DELETE
  • GET
  • HEAD
  • OPTIONS

什么是Postman?

答案:Postman是一个API开发工具,用于开发、修改和测试API。它提供了许多功能,可以快速构建和测试API,而无需设置客户端。

什么是Cache-Control头?

答案:Cache-Control头包含配置浏览器和服务器缓存的指令或指令。它告诉浏览器或服务器要缓存什么以及在通过网络请求请求之前应该缓存多长时间。

Cache-Control头包括以下指令:

  • max-age
  • no-cache
  • private
  • public
  • no-store
  • immutable

定义RESTful Web服务中的消息传递。

答案:在RESTful Web服务中,消息传递指的是客户端向服务器发送HTTP请求,服务器以HTTP响应作出回应。客户端和服务器之间的这种通信称为消息传递。

单体架构、SOA架构和微服务架构之间有什么区别?

答案:在单体架构中,所有内容都在一个地方管理。客户端、服务器以及数据库都在同一个地方管理。这就是为什么它被称为单体,因为“单体”一词指的是单个块或石头。

SOA代表面向服务的架构。在这种架构中,应用程序的不同方面由不同的服务管理,这些服务也是软件。因此,它是多个服务软件模块的组合。集成是该架构的关键部分。

Microservices architecture类似于SOA,但与SOA不同,它具有多个自治的软件程序,它们使用API进行通信。与单体架构不同,这里的一切都是自治的,并且在某种程度上是独立的。

微服务架构如何工作?

答案:在微服务架构中,应用程序被划分为更小的子单元,这些子单元彼此独立工作,但通过一组明确定义的API进行通信。

微服务架构的一些好处包括灵活性、可扩展性、独立的技术、可重用的服务和简便的部署。

什么是CRUD?

答案:CRUD代表创建(Create)、读取(Read)、更新(Update)、删除(Delete)。这些是对特定资源可以执行的操作。支持所有这些操作的API称为CRUD API。这些是API在资源上执行的最基本操作。

什么是缓存?

答案:缓存是一种将响应或请求存储在客户端或服务器上以便以后再次使用的技术。

响应通常在客户端上进行缓存,因为如果客户端在短时间间隔内多次发出相同的请求,那么再次通过网络请求响应并浪费带宽是没有意义的。

什么是@RequestMapping的用途?

答案:@RequestMapping是spring框架中的注解,用于将Web请求映射到特定的处理程序类和/或处理程序方法。

@PathVariable是做什么用的?

答案:spring框架中的@PathVariable注解用于提取模板变量的值并将其赋值给方法变量。

定义HttpMessageConverter。

答案:当需要将HTTP请求(或其中的部分)转换为作为处理程序方法的参数所需的类型,或者当需要以某种方式转换处理程序方法返回的值以创建HTTP响应时,将使用HTTP消息转换器。

测试Web API需要哪些工具?

答案:以下是一些可以帮助您进行API测试的工具:

  • Postman
  • Rest Assured
  • Rest Sharp
  • Katalon
  • ReadyAPI
  • Apigee

最后的话

如今,由于互联网的出现,API变得非常流行。另一个REST API受欢迎的原因是它们易于开发和使用。

如果您正在准备面试,请考虑上述关于REST API的问题,这些问题可能会在您的面试中被问到。

接下来,您可以查看如何使用Geekflare’s Web Scraping API来爬取网站。

类似文章