RESTful API实现了多项发展,包括云计算和基于微服务的架构。他们将在线通信和计算描述为简单。因此,任何开发人员都必须了解REST 是什么、它的功能、它的好处以及如何创建安全的服务以跟上时代的步伐。由于互联网的力量,他们可以帮助他们创建可扩展、易于维护的解决方案,并使他们的产品能够覆盖全球,因此许多企业更喜欢了解 REST 的开发人员。
如何准备 RESTful API 相关的面试题?
在 REST API 面试期间,最常见的 REST API 面试问题有关 RESTful Web 服务,以及有关使用 Spring MVC 框架构建的 JAX-RS 库和 RESTful Web 服务的询问,将在下面的部分中提及。在参加或安排面试之前,准备所有提到的 REST API 面试问题至关重要。
什么是 REST?
REST,描述 Representational State Transfer,负责开发建立在 HTTP 协议上的网站应用程序。 REST 指定了几个规则,网站相关的有用性必须附加以相信它。这些建议确保服务器和用户之间的标准化 HTTP 方法以虚拟方式传输提交。
什么是 REST API?
RESTful API 在两个计算机系统之间进行安全的在线信息交换。为了完成各种活动,大多数业务应用程序与其他内部和外部程序交换数据。例如,当您的内部帐户系统与外部银行系统共享员工信息以生成工资单时。可以使用 REST API 来完成,因为这些信息是个人的,并且 REST API 软件标准是安全、高效和值得信赖的。
RESTful API 被称为以某种方式链接到 REST 的 API。所有数据都被视为 REST API 中的资源,并由称为 (URI) 的精确标准常量单元确定。 Twitter API 创建一条推文作为用户可以访问和检索的资源。使用 Twitter API,用户可以轻松发布推文。
REST的原则是什么?
客户端-服务器允许用于在消费者和服务器之间传输的一系列响应。两者都可以相互发送和接受响应。客户-服务器方法的这种清晰愿景将允许双方力量在彼此独立的情况下运作。
分层系统
在客户端和 API 服务器之间,层是服务器。这些不同的服务器执行多项任务,例如检测垃圾邮件和提高性能。客户端和应用程序编程接口 (API) 服务器之间发送的消息不受添加或删除层的影响,因为 REST(表示状态)使用模块化架构。
统一的界面
客户端和服务器必须始终使用相同的协议进行所有通信。该协议是 HTTP REST。因为每个应用程序都使用相同的语言来请求和提供数据,所以统一的界面有助于集成。
无状态
在无状态通信中,服务器不保留已发送响应的记录。每个响应都拥有完成交易所需的完整输入。它通过减少服务器负载和内存使用来改进解释。它还消除了由于信息不完整而导致请求失败的可能性。
可缓存
客户端可以缓存任何资源以提高性能,方法是使用来自服务器的服务器响应来指示资源是否可缓存。 REST 还包含以下可选条件。
按需编码
API 的响应可以包含用户可以运行的可执行代码。因此,客户端应用程序可以在其自己的后端执行代码。
AJAX 和 REST 有什么区别?
AJAX 和 REST 的区别在于:
AJAX | 休息 |
XMLHttpRequest 对象在 Ajax 中用于向服务器发送请求。但是,来自JavaScript的代码提供了动态更改当前页面的答案。 | 资源的利用对于 URI 结构和请求/响应模式很重要。由 REST 使用。 |
Ajax 是一组允许动态更新用户界面而无需重新加载页面的技术。 | 用户可以使用 REST 软件架构风格从服务器请求数据或信息。 |
Ajax 消除了服务器和用户之间的异步通信。 | REST 需要服务器和用户之间的通信。 |
微服务架构如何工作?
一种用于开发云应用程序的架构方法称为微服务。每个应用程序都由许多服务组成,每个服务都在一个单独的进程中执行,并通过 API 与其他服务进行交互。随着时间的推移,一种称为“微服务架构”的应用程序创建方法已成为最佳实践。微服务架构的组件基于业务的需求。
- 客户
许多用户使用各种设备发送请求。
- 身份提供者
验证用户或客户的身份并提供安全令牌。
- API网关
客户端请求通过 API Gateway 处理。
- 静态内容
系统的所有材料都包含在静态内容中。
- 管理
跨节点确定故障并平衡服务。
- 服务发现
用于确定微服务之间通信路径的工具。
- 内容分发网络
代理服务器和相关数据中心的分布式网络。
- 远程服务
在远程服务的帮助下,可以远程访问存储在 IT 设备网络上的信息。
REST 支持哪些 HTTP 方法?
REST HTTP 支持的方法是:
- GET - 网站和 API 中使用最广泛的方法,GET 从特定数据服务器接收资源。
- POST - 通过 POST 方法,将数据发送到 API 服务器以更新资源。当服务器接收到数据时,它会将其存储在 HTTP 请求正文中。
- PUT - 它向 API 发送数据以创建和更新资源。
- DELETE - 顾名思义,此方法用于删除特定 URL 处的资源。
- 选项 - 它详细说明了支持的技术。
HEAD - 返回有关请求 URL 的元数据。让我们从单个记录的角度来检查情况。假设有员工编号为 1 的工人的记录。以下活动将分别表明不同的情况。
POST - 因为我们正在检索已经创建的员工 1 的信息,所以这不适用。
GET - 这将用于通过 RESTful Web API 检索员工的信息,员工编号为 1。
PUT - 使用 RESTful Web API,PUT 将用于更新员工的信息以反映 1 号员工。
DELETE - 此功能用于删除员工编号为 1 的员工信息。
PUT 和 POST 有什么区别?
PUT 和 Post 的区别如下:
- PUT - 在提供的(统一资源标识符)URI 处精确且特别地标识文件或资源。如果现有文件存在于该统一资源标识符 - URI,则 PUT 会更改该文件。如果已经存在文件,则 PUT 会形成一个文件。另外,PUT 是幂等的,这表明它不会影响文件的使用频率。
- POST - 它将数据发送到不同的统一资源标识符 - URI,并期望那里的资源文件将管理需求。此时,网站服务器可以决定可以对所选文件上下文中的数据做什么。另外,POST 策略不是幂等的,这意味着如果您多次使用它,它将继续生成新文件。
单体 SOA 和微服务架构有什么区别?
单体应用程序的开发速度非常缓慢,并且由相互连接、不可分割的单元组成。较小的、最少连接的服务构成了 SOA,它的发展也很有限。
微服务是非常小的、松散连接的独立服务,具有快速的迭代开发周期。
什么是 URI?
统一资源标识符称为 URI。 REST 中的 URI 是指定 Web 服务器资源的字符串。每个资源都有一个不同的 URI,当在 HTTP 请求中使用时,客户端可以定位它并对其执行操作。寻址是使用其 URI 将流量定向到资源的过程。
URI的格式为:
<协议>://<服务名称>/<资源类型>/<资源ID>
有两种类型的 URI
1. URL - 关于从其位置检索资源的信息在统一资源定位器中可用。
URL 包含有关网络主机名 (sampleServer.com) 和内容路径 (/samplePage.html) 的信息,它们以协议(如 FTP、HTTP 等)开头。它也可能有搜索条件。
2. URN - 通过使用独特且持久的名称,统一的资源名称标识资源。
互联网上资源的位置不一定由 URN 指定。它们充当其他解析器在识别资源时使用的模型。
每当 URN 识别文档时,可以使用“解析器”将其快速转换为 URL,以便下载。
RESTful Web 服务有哪些特点?
这些功能存在于每个 RESTful Web 服务中:
- 客户端-服务器通信模型是服务的基础。
- 该服务利用 HTTP 协议来获取数据/资源、运行查询和执行其他任务。
- “消息传递”是用于在客户端和服务器之间进行通信的方法。
- 服务可以通过使用 URI 来访问资源。
- 它坚持无状态思想,在这种思想中,客户端的请求和回答不依赖于其他人,因此可以完全确定将获得必要的数据。
- 为了减少对相同类型重复请求的服务器调用,这些服务还采用了缓存的思想。
- 这些服务还可以使用 SOAP 服务实现 REST 架构模式。
什么是 HTTP 状态码?
HTTP 状态中使用的标准代码对应于已建立的服务器任务完成状态。例如,HTTP 状态 404 表示服务器没有请求的资源。
让我们看一下 HTTP 状态码并理解它们的含义:
- 200 - 好的,成功是显而易见的。
- 201 - 当 POST 或 PUT 请求成功创建资源时,响应代码为 201 - CREATED。使用位置标头,将 URL 返回到新生成的资源。
- 304 - 在有条件的 GET 请求的情况下,状态码 304 NOT MODIFIED 用于节省网络带宽。响应机构必须是无效的。日期、地点和其他信息应该在标题中。
- 400 - BAD REQUEST 表示提供了无效输入,例如缺少数据或验证错误。
- 401 - FORBIDDEN 表示用户无权访问正在使用的方法,例如删除没有管理员权限的访问权限。
- 404 - ERROR 表示找不到请求的方法。
- 409 - CONFLICTS 执行该方法时,表示存在冲突问题,例如插入重复条目。
- 500 - INTERNAL SERVER ERROR 代码表示服务器在执行方法时抛出了异常。
你能告诉我 RESTful Web 服务的缺点吗?
RESTful Web 服务的缺点是:
- 由于助手坚持无状态的概念,因此无法维护 RESTful Web 服务中的会话。
- 安全和保护限制对 REST 来说不是必不可少的。一些协议用于安全保障。这样做会在确定选择哪些保护和安全标准时提供可以使用的警告,例如 SSL/TLS 身份验证。
区分 SOAP 和 REST?
SOAP 和 REST 的区别在于:
肥皂 | 休息 |
一种称为 SOAP 的协议用于实现 Web 服务 | REST 是一种用于开发 Web 服务的架构设计模式 |
SOAP 提供的指南旨在严格遵守 | REST 概述了标准,但是,它们不需要完全遵守 |
由于 SOAP 客户端和服务器的关系更加密切,因此在这方面可以与具有严格契约的桌面程序相媲美 | REST客户端比浏览器适应性更强,只要符合必要的通信标准就可以独立于服务器的设计 |
SOAP 仅支持客户端和服务器之间的 XML 传输 | REST提供多种数据类型,包括XML、JSON、MIME、Text等 |
SOAP 读取无法缓存 | 可以缓存 REST 读取查询 |
SOAP 使用服务接口来公开资源逻辑 | 使用 URI 使用 REST 公开资源逻辑 |
SOAP 比较慢 | REST 更快 |
作为一种协议,SOAP 建立了自己的安全协议 | REST 仅根据实现协议采取安全预防措施 |
尽管 SOAP 不经常选择,但在需要有状态数据传输和更高可靠性时使用它 | 如今,REST 经常受到开发人员的青睐,因为它提供了更多的可扩展性和可维护性 |
HTTP Response 的核心组件是什么?
HTTP 响应具有以下四个主要组件:
- 响应状态码——显示服务器响应资源请求的状态码。示例:客户端错误由 400 表示,而成功的答案由 200 表示。
- HTTP 版本 - HTTP 协议版本由 HTTP 版本指示。
- 响应头 - 响应消息的元数据包含在此部分中。数据可用于提供内容长度、类型、响应日期、服务器类型等内容。
- 响应正文 - 服务器实际返回的资源或消息包含在响应正文中。
WebSockets 和 REST 有什么区别?
以下是下面提到的WebSocket和 REST 之间的一些区别:
REST 基于 CRUD 操作,而 WebSocket 是基于套接字和端口概念的低级协议,它们是基本的传输机制。
虽然 RESTful 应用程序必须基于动词和 HTTP 设计它们的操作,但 WebSocket 需要使用 IP 地址和端口信息,这对于任何应用程序来说都是较低级别的详细信息。 WebSocket 是一种有状态协议,而 REST 是建立在无状态协议之上的,这意味着客户端和服务器都不需要相互了解。
与基于 HTTP 的 REST 可以水平扩展相比,WebSocket 连接可以在单个服务器上垂直扩展。基于 REST 的通信成本相对较高,但 WebSocket 通信成本较低。
我们可以在 REST 中实现传输层安全性 (TLS) 吗?
我们可以,是的! REST 中客户端-服务器的通信使用 TLS 加密,这也为用户提供了确定服务器的能力。由于它取代了安全套接字层 (SSL),因此它是用户和服务器之间安全通信的一种形式。由于 HTTPS 与安全套接字层 (SSL) 和传输层安全性 (TLS) 配合得很好,因此在创建 RESTful Web 服务时非常有用。在这里,重要的是要注意 REST 涉及到它使用的协议的各个方面。因此,安全保护依赖于 REST 的协议。
可以在 POST 方法中发送的最大有效负载大小是多少?
在 post 方法中可以传送的有效载荷的大小在理论上是不受限制的。但是,重要的是要记住,较大的有效负载会消耗更多的带宽并需要更长的处理时间,从而影响服务器的响应能力。
列出 JAX-RS API 中存在的关键注释
- 路径 - 详细说明 REST 资源的相对统一资源标识符 (URI) 路径。
- GET - 请求方法的这个指示符对应于 HTTP GET。他们处理 GET 查询。
- POST - 请求方法的这个指示符对应于 HTTP POST。他们处理 POST 查询。
- PUT - 请求方法的这个指示符对应于 HTTP PUT 请求。他们处理 PUT 查询。
- DELETE - 它被定义为用于 HTTP DELETE 的请求方法的指示符。他们处理 DELETE 请求。
- HEAD - 请求方法的这个指示符对应于 HTTP HEAD。他们处理 HEAD 查询。
- PathParam - 开发人员可以使用此统一资源标识符 (URI) 路径参数从 URI 中提取资源类/方法的参数。
- QueryParam - 资源类/方法可以使用开发人员使用此统一资源标识符 (URI) 查询参数从统一资源标识符 (URI) 中提取的这些查询。
- Produces - 在此处指定创建并作为回复发送给用户的 MIME 资源演示文稿。
- 消耗 - 这详细说明了服务器在从用户接收返回时将接受或使用的 MIME 资源表示。
在 Spring 中定义 RestTemplate
用户访问 RESTful 服务的主要类称为 RestTemplate。利用 REST 限制,与服务器进行通信。这与 Spring 提供的不同模板部分相当,例如 JdbcTemplate 和 HibernateTemplate。 RestTemplate 使方法能够使用(统一资源标识符)URI 模板、URI(统一资源标识符)路径参数、请求/响应类型、请求对象等进行通信。它为 HTTP 方法(如 GET)提供了高级实现细节,POST,PUT等。
Spring 4.3 的这一部分提供了常用的注解,如@GetMapping、PutMapping、@PostMapping 等。在此之前,Spring 提供了@RequestMapping 解释来指定正在使用的方法。
@RequestMapping 有什么用?
- 使用注解将请求映射到特定的处理程序方法。
- Dispatcher Servlet 管理 Spring 中所有传入的 Web 应用程序路由。通过使用请求处理程序,它决定在所有控制器中哪个控制器在收到请求时要处理它。 Dispatcher Servlet 会扫描所有带有@Controller 注释的类。
在控制器方法和类中定义的@RequestMapping 注解对于请求路由过程是必不可少的。
列出用于开发或测试 Web API 的工具或 API
借助 Postman、Swagger 等各种工具,可以测试 RESTful Web 服务。 Postman 具有许多功能,包括向端点发送请求、显示可以转换为 JSON 或 XML 的响应以及分析请求参数(如标头和查询参数)以及响应标头的能力。与 Postman 一样,Swagger 提供了许多功能以及记录端点的能力。我们还可以使用 Jmeter 等工具测试 API 的性能和负载。
什么是缓存?
当缓存服务器响应时,它会被保存,以便在必要时可以使用新副本,而不必再次生成相同的响应。这种技术不仅减轻了服务器的负担,而且提高了其性能和可扩展性。响应只能由客户端缓存,并且只能缓存一小段时间。
下面包含资源的标头和简明描述,以便缓存过程可以识别它们:
- 创建资源的日期和时间
- 资源更新的日期和时间,通常保留最新信息
- 缓存控制的标头
- 缓存资源停止工作的日期和时间
- 确定获取资源的起点的年龄
学习 REST API 的最佳资源是什么?
有许多可用资源来学习用于开发网站和移动应用程序的 REST API。前5名如下:
RESTful Web 服务
为了开始使用 API 开发应用程序,Leonard Richardson 的这本名为 RESTful Web Services Wonder 的指南将是这方面的重要资产。特别是如果您是初学者并想了解代表性状态转移 (REST) 网站服务的基础知识。该资源通过示例揭示了具象状态转移 (REST) 的功能以及其他多种与 Web 相关的基本服务。它不基于任何一种编程语言,因此对 RESTful API 的理解将不受任何编程语言的束缚。
REST API 教程
如果您不是书本或阅读者,REST API 教程是一个很好的在线资源,用于学习具象状态转移 (REST)。该资源将帮助您从头到尾学习 REST,涵盖所有基本方面。本教程从介绍Representational State Transfer(REST)开始,然后将沿用HTTP相关策略和知识等示例路径。
REST API 设计规则手册
这也是一本关于代表性状态转移 (REST) 指导的优秀资源书,因为这本书的作者 Mark Masse 传达了他所采取的经验和策略,这些经验和策略有助于他使用 REST API 构建应用程序。在此资源中,他讨论了设计应用程序 URI 的实践、通过 HTTP 标头传输元数据的方法以及可以使用哪些类型的媒体。此外,如何在设计 HTTP 的提交方法和响应状态码方面进行创新。
API 开发者周报
有一个很棒的资源,叫做 API 开发者周报;它是学习 RESTful API 的最新资源,因为它高度集中于基于 Web 的应用程序和移动应用程序的 API 技术、结构、扩展和架构。该时事通讯专为开发人员、项目经理和架构师设计。
放心
这是一种幸运的开源 REST 测试媒介,适用于有使用 Java 编程语言的人。此资源有助于测试和验证 RESTful API 流程的过程。 REST-Assured 还消除了为测试复杂反应而制作样板代码的必要性,并有助于 BDD 语法。
简而言之
作为结论,上述文章分享了 REST API 面试问题。它涵盖了即将申请或已经申请需要 RESTful API 知识的类似工作的人的所有 REST API 面试问题。这些是面试官在求职面试中最常见的问题。此外,在您参加最终面试之前,请查看上述资源。
此外,如果您想构建您的网站应用程序或移动应用程序,AppMaster 可以是您的最终选择。这是一个无代码平台,可让您轻松构建各种应用程序u-ni-huo-de-ni-xiang-yao-de-ding-zhi-ruan-jian">拖放方法,无需任何编码经验或知识。立即查看优惠。