2024年免费的文本工具API接口清单
REST API应届开发者应该掌握的30+问题和答案
您知道 API 吗?应用程序编程接口 (API) 是两个软件程序用来相互通信和交换数据的一组规则。那么 REST API 是什么?为什么市场上对它如此热衷?REST 不是一种协议或标准,而是一种架构风格。REST API 提供了一种灵活、轻量级的方式来集成应用程序并连接微服务架构中的组件。它们是云计算兴起的原因。
无论你是想成为工程师、产品经理、数据分析师还是客户成功经理,你都必须具备 REST API 的理论和实践知识。在参加面试时,请准备好本Web API 教程中的 Rest API 面试问题和答案。
1、什么是 REST API?
REST,即表述性状态转移,是一种 Web 服务架构,它使用 HTTP 请求发送和访问来自各种来源的数据。在 REST API 中,所有数据都被视为资源。每个资源都与一个唯一的统一资源标识符 (URI) 相关联以识别它。RESTful API 是两个计算机系统用来通过互联网安全地交换信息的接口。
RESTful Web 服务必须遵循一些说明。这些准则对于被视为 RESTful 的 Web 服务必不可少。这些准则确保使用标准化 HTTP 方法在客户端和服务器之间轻松高效地发送请求和资源。
2、什么是RESTful Web 服务?
RESTful Web 服务遵循 REST 架构设计模式创建,即使用 HTTP 协议及其各种方法实现。它们通过请求标头、请求正文、响应正文、状态代码等方式,为客户端提供通过 Web 浏览器访问服务器上所需资源的方法。
3、什么是 REST 资源?
在 REST 中,服务器上每个可访问的内容都称为资源。资源是一个对象,具有类型、关联数据、与服务器上其他资源的关系以及可与其一起使用的方法列表。它们可以表示为文本文件、HTML 页面、图像或任何其他动态数据。
资源用 URI 来标识。REST 客户端可以使用 HTTP 请求来访问资源,以便与资源的 URI(统一资源标识符)进行交互。
4、RESTful Web 服务有哪些特点?
RESTful Web 服务具有以下特点:
它适用于客户端-服务器模型。
该服务使用 HTTP 协议来获取数据/资源、执行查询或任何其他功能。
客户端与服务器通过“消息传递”进行通信。
服务可以通过 URI 访问资源。
它遵循无状态概念,其中客户端的请求和响应不依赖于其他请求和响应,从而完全保证获取所需的数据。
这些服务还使用缓存的概念来最大限度地减少对同一类型重复请求的服务器调用。
这些服务还可以使用 SOAP 服务作为 REST 架构模式的实现协议。
5、你对 RESTful Web 服务中的消息传递有何理解?
在 REST API Web 服务中,消息传递是客户端与服务器之间的通信。交互始终从客户端使用 HTTP 请求向 API 发送消息开始。API 处理此请求。然后,它发回 HTTP 响应,该响应提供请求的状态以及客户端请求的任何资源。消息由有关消息的数据和元数据组成。
6、什么是 URI?
URI 是统一资源标识符。它们是 REST API 中使用的字符串,用于标识 API 服务器上的 API 资源。每个资源都有自己独特的 URI,当包含在 HTTP 请求中时,客户端可以定位该资源并对其执行操作。寻址是使用其 URI 定位资源的过程。
URI 的格式为
<协议>://<服务名称>/<资源类型>/<资源ID>
7、REST API 使用哪种协议?
REST API 使用 HTTP 协议与客户端通信。HTTP 协议用于将网页传送到客户端浏览器。
8、RESTful API 客户端请求包含什么?
RESTful API 要求请求包含以下主要组件:
唯一资源标识符 (URI):服务器使用唯一资源标识符来标识每个资源。对于 REST 服务,服务器通常使用统一资源定位器 (URL) 来执行资源标识。URL 指定资源的路径。
方法:我们使用超文本传输协议 (HTTP) 实现 RESTful API。HTTP 方法告诉服务器需要对资源执行什么操作。常见的 HTTP 方法有 GET、POST、PUT、DELETE 等。
HTTP 版本:此部分显示您正在使用的 HTTP 协议的版本。
HTTP 标头:请求标头是客户端和服务器之间交换的元数据。
请求正文:包含要发送到服务器的实际消息内容。
9、什么是HTTP状态代码? 列出常见的HTTP响应代码。
HTTP 状态代码是服务器响应中包含的三位数字,指示客户端请求的结果。
HTTP 响应代码的第一位数字分析服务器给出的响应类型。
1XX:信息响应
2XX:成功响应
3XX:重定向
4XX:客户端错误
5XX:服务器错误
常见的HTTP响应有:
200(OK):请求成功
201(已创建):请求成功且资源已创建
400(错误请求):由于用户错误(拼写错误或数据缺失)导致请求失败
401(未授权):请求不成功,客户端未经身份验证/授权
403(禁止):请求不成功;客户端已通过身份验证,但未获得授权
404(Not Found):请求失败;服务器找不到资源
500(内部服务器错误):由于意外的服务器错误导致请求失败
502(错误网关):由于服务器响应无效,请求失败
503(服务不可用):服务器正在维护/不可用,无法处理请求
10、Rest 支持哪些 HTTP 方法?
REST 中的四种主要 HTTP 请求方法是:
GET:通过指定端点 URL 从 API 检索数据,不需要用户发送消息正文
POST:发送新数据供 API 处理,通常会创建 API 返回给用户的新资源。需要消息正文来提交数据
PUT:用于更新服务器上旧的/现有的资源,或者替换资源。
DELETE:从 API 服务器中删除现有资源
REST API 还支持两种不太常见的 HTTP 方法:
OPTIONS:检索可与 REST API 资源一起使用的支持方法列表
HEAD:类似 GET,但检索有关 API 资源的元数据
11、REST API 中的缓存是什么?
缓存是指在请求-响应路径上的多个位置存储经常访问的数据副本的能力。当客户端请求某些资源时,请求首先经过缓存,然后到达服务器。如果缓存包含更新的数据,请求将使用该数据来满足用户请求。如果没有,则数据来自服务器。
12、区分 REST 和 SOAP API。
参数 | REST | SOAP |
代表 | 表述性状态转移 | 简单对象访问协议 |
它是什么? | REST 是一种设计通信接口的架构风格。 | SOAP 是一种应用程序之间通信的协议 |
设计 | REST API 公开数据 | SOAP API 公开操作 |
传输协议 | REST 仅适用于 HTTPS。 | SOAP 是独立的并且可以与任何传输协议一起工作。 |
数据格式 | REST 支持 XML、JSON、纯文本、HTML | SOAP 仅支持 XML 数据交换 |
表现 | 由于消息较小且支持缓存,REST 的性能更快。 | SOAP 仅支持 XML 数据交换。 |
可扩展性 | REST 易于扩展。它是无状态的,因此每条消息的处理都独立于先前的消息。 | SOAP 难以扩展。服务器通过存储与客户端交换的所有先前消息来维护状态。 |
安全 | REST 支持加密且不影响性能。 | SOAP 支持加密,但需要额外的开销。 |
用例 | REST 在现代应用程序和公共 API 中很有用。 | SOAP 在遗留应用程序和私有 API 中很有用。 |
13、REST API 上下文中的 CRUD 是什么?
CRUD 是创建、读取、更新和删除的首字母缩写。这些不同的操作通常与数据库相关。在 REST API 上下文中,我们可以通过 HTTP 请求对数据库执行每种操作类型。
• 创建:需要 HTTP POST 方法
• 阅读:需要 HTTP GET 方法
• 更新:需要 HTTP PUT 方法
• 删除:需要 HTTP DELETE 方法
14、REST API 如何实现无状态?
无状态意味着 REST API 服务器不存储任何有关先前客户端通信的信息。因此,服务器和客户端没有关于彼此状态的信息,从而使服务器可以释放原本需要用于维护每个请求记录的存储空间。
因此,对 REST API 发出的每个请求都被视为一次全新的交互,这意味着每次客户端都需要提供所有必要的信息才能成功完成 API 请求。
15、什么是payload?
“有效负载”是指 HTTP 请求主体中的数据或 GET 或 POST 请求中的响应消息。数据可以是 JSON 或 XML 对象,有时也可以是二进制数据,如图像或视频。有效负载是 REST API 的重要组成部分,因为它包含在客户端和服务器之间传输的实际数据。确保有效负载根据 API 的规范正确格式化和构造非常重要,以确保正确通信和处理数据。
16、在 REST API 中,使用哪些标记语言来表示资源?
REST API 中的资源使用 XML(可扩展标记语言)和 JSON(JavaScript 对象表示法)表示。
17、有哪些不同的应用程序集成风格?
不同的集成风格包括
共享数据库
批量文件传输
调用远程过程 (RPC)
通过面向消息的中间件 (MOM) 交换异步消息
18、REST API 中的“选项”是什么?
在 REST API 中,“选项”指的是 OPTIONS HTTP 方法。OPTIONS 方法描述目标资源的通信选项。它可用于确定与资源相关的功能和限制,包括支持的 HTTP 方法和所需的标头。
19、REST API 的原理是什么?
统一接口:它是任何 RESTful Web 服务设计的基础。它表示服务器以标准格式传输信息。格式化的资源在 REST 中称为表示。
无状态:是指服务器独立于所有先前的请求完成每一个客户端请求的通信方式。
分层系统:您可以将 RESTful Web 服务设计为在具有多个层(例如安全层、应用程序层和业务逻辑层)的多台服务器上运行,这些层协同工作以满足客户端请求。这些层对客户端不可见。
可缓存性:RESTful Web 服务支持缓存,即将一些响应存储在客户端或中介上以改善服务器响应时间的过程。
按需代码:在 REST 架构风格中,服务器可以通过将软件编程代码传输到客户端来临时扩展或定制客户端功能。
20、什么是幂等方法?
幂等 HTTP 方法是指可以多次调用而不会产生不同结果的方法。该方法是否只被调用一次或十次并不重要。结果应该始终相同。
21、什么是 AJAX?REST 与 AJAX 有何不同?
AJAX 代表异步 JavaScript 和 XML。它是一种 Web 开发技术,允许在后台加载数据而无需重新加载整个页面。这使得 Web 应用程序响应更快,因为用户不必在每次与页面交互时等待整个页面重新加载。
REST | AJAX |
REST——表述性状态转移 | AJAX-异步 JavaScript 和 XML |
REST 有一个 URI,用于使用请求-响应模式访问资源。 | AJAX 使用 XMLHttpRequest 对象向服务器发送请求,并由 Javascript 代码动态解释响应。 |
REST 是一种用于开发客户端-服务器通信系统的架构模式。 | AJAX 用于动态更新 UI,而无需重新加载页面。 |
REST 需要客户端与服务器之间的交互。 | AJAX 支持异步请求,从而消除了客户端与服务器持续交互的必要性。 |
22、API 测试有哪三种类型?
API 测试可分为三类:
单元测试(组件测试):它侧重于代码的单个单元或组件,通常在功能级别。它单独验证 API 中特定功能或方法的正确性。
集成测试:它涉及测试 API 内不同组件、模块或系统之间的交互和集成点。主要目标是确保集成的组件组合在一起时能够协同工作并达到预期效果。
端到端测试(功能测试):评估整个API 系统,包括所有组件、数据库、外部服务和通信接口。
23、您可以在 GET 和 DELETE 方法中发送有效负载吗?
不可以,有效载荷与请求参数不同。因此,无法在这些方法中发送有效载荷数据。
24、POST 方法中可以发送的最大有效负载大小是多少?
没有这样的限制。唯一的问题是,有效负载越大,带宽消耗和处理请求所需的时间就越大。在 POST 请求中发送大型有效负载需要有效的策略才能高效传输。
25、什么是 JAX-WS 和 JAX-RS?
Java API for XML Web 服务 (JAX-WS) 是用于创建和使用 SOAP(简单对象访问协议)Web 服务的标准化 API。JAX-WS 允许开发人员编写面向消息以及面向远程过程调用(面向 RPC)的 Web 服务。
JAX-RS 代表 RESTful Web 服务的 JAVA API。它是一种基于 JAVA 的编程语言 API 和规范,用于支持根据表述性状态转移 (REST) 架构模式创建 Web 服务。
26、如果要让多个客户端共享资源,我们是否应该明确地使资源线程安全?
否。这不是必需的。这是因为,每次请求时,都会创建新的资源实例,这默认使它们线程安全。
27、有哪些方法可以保护 REST API 的安全?
强大的身份验证和授权
实施 OAuth 2.0 和 OpenID Connect 等协议可以安全地管理用户身份验证。使用基于角色的访问控制 (RBAC) 或基于属性的访问控制 (ABAC) 设置明确的策略对于授权至关重要。添加多因素身份验证 (MFA) 可以显著增强安全性,减少未经授权访问的可能性。
加密传输中和静止的数据
对于传输中的数据,请使用具有强密码套件的 TLS。对于静态数据,请使用 AES 等加密算法,并通过云提供商或硬件安全模块 (HSM) 服务安全地管理加密密钥。
错误处理和日志记录
错误处理对于避免通过 API 错误泄露敏感数据至关重要。记录 API 事务对于跟踪和分析活动至关重要。确保日志不包含敏感信息。
使用节流和速率限制
节流管理 API 的吞吐量,而速率限制则对请求施加硬性限制。通过 API 网关或中间件实施这些措施有助于防止过度使用并防止拒绝服务攻击。
28、您可以将 TLS(传输层安全性)与 REST API 一起使用吗?
是的,TLS 可以加密客户端和 REST API 服务器之间的通信,从而提供一种安全的 API 资源访问方式。要享受 TLS 加密和安全的益处,请求必须使用 HTTPS 而不是标准 HTTP。这一点很重要,因为 REST API 采用了其用于通信的协议的安全属性。
29、JAXB 与 RESTful Web API 有何关系?
JAXB(Java XML 绑定架构)与 RESTful Web API 密切相关,尤其是在基于 Java 的应用程序环境中。
30、创建 URI 的最佳实践是什么?
- 使用名词来表示资源
- 使用一致的资源命名约定和 URI 格式,以最大限度地减少歧义并实现最大的可读性和可维护性。
- 使用正斜杠 (/) 表示层次关系
- 不要在 URI 中使用尾部斜杠 (/)
- 使用连字符 (-)
- 不要使用下划线(_)
- 使用小写字母
- 不要使用文件扩展名
- 切勿在 URI 中使用 CRUD 函数名称
- 不要在 URI 中使用动词
读完这些问题后,您可能对可以提出的问题类型有所了解。REST API 允许不同的软件轻松、高效、安全地进行通信。随着软件行业的发展,对 REST 架构的需求将不断上升。因此,所有未来的开发人员都必须熟练掌握 REST 技术。
常见问题解答
Q1. 我该如何准备 Rest AP 面试?
重点了解 HTTP 方法、状态代码和身份验证机制。练习使用 Express.js 或 Flask 等框架构建和使用 API。
Q2. 如何在面试中展示我的 Rest API 项目?
在面试期间,介绍您的项目,解释它们解决的问题、使用的技术、实现的主要功能以及克服的任何挑战。通过示例展示您的 API 的功能,并讨论所做的任何优化或改进。
Q3. 回答 Rest API 面试问题有哪些技巧?
为了有效地回答 REST API 面试问题,请重点解释关键概念,例如 CRUD 操作、无状态以及使用 JSON 或 XML 的资源表示。
本文翻译源自:https://www.scholarhat.com/tutorial/webapi/rest-api-interview-questions
- 1、什么是 REST API?
- 2、什么是RESTful Web 服务?
- 3、什么是 REST 资源?
- 4、RESTful Web 服务有哪些特点?
- 5、你对 RESTful Web 服务中的消息传递有何理解?
- 6、什么是 URI?
- 7、REST API 使用哪种协议?
- 8、RESTful API 客户端请求包含什么?
- 9、什么是HTTP状态代码? 列出常见的HTTP响应代码。
- 10、Rest 支持哪些 HTTP 方法?
- 11、REST API 中的缓存是什么?
- 12、区分 REST 和 SOAP API。
- 13、REST API 上下文中的 CRUD 是什么?
- 14、REST API 如何实现无状态?
- 15、什么是payload?
- 16、在 REST API 中,使用哪些标记语言来表示资源?
- 17、有哪些不同的应用程序集成风格?
- 18、REST API 中的“选项”是什么?
- 19、REST API 的原理是什么?
- 20、什么是幂等方法?
- 21、什么是 AJAX?REST 与 AJAX 有何不同?
- 22、API 测试有哪三种类型?
- 23、您可以在 GET 和 DELETE 方法中发送有效负载吗?
- 24、POST 方法中可以发送的最大有效负载大小是多少?
- 25、什么是 JAX-WS 和 JAX-RS?
- 26、如果要让多个客户端共享资源,我们是否应该明确地使资源线程安全?
- 27、有哪些方法可以保护 REST API 的安全?
- 28、您可以将 TLS(传输层安全性)与 REST API 一起使用吗?
- 29、JAXB 与 RESTful Web API 有何关系?
- 30、创建 URI 的最佳实践是什么?
- 常见问题解答