REST API 范例在哪个 OSI 层?

In which OSI layer is the REST API paradigm?

在一次采访中,我被要求对 OSI 层之间的 REST API 范式进行分类。

我以为应该在5到7层之间;但是面试官说只属于第5层,因为和RPC类似

在我看来,它不能只在第 5 层会话层,因为真正的 REST API 与会话(HTTP 会话)不同,它是无状态的,因此它可以作为协议放在第 7 层(应用程序) ) 因为它就像 HTTP(但为什么不是在 6th 中呢?)。

我在网上搜索过,但没有找到明确的答案 (我知道有些协议在 OSI 层中分布不明确)。

也许其他人对此有更明确的看法?

REST 架构在某种意义上是无状态的,即服务器不存储客户端的状态,但对象的状态来回传输。毕竟,REST 代表 Representational State Transfer。所以,我认为 REST 属于第 5 层 - 会话层,通常被描述为在两个节点之间以多次来回传输的形式连续交换信息的层。

很难看出 REST API 如何属于 OSI 模型的第 6 层或第 7 层。表示层提供将要传输的数据的表示形式或语法的协商。通常,字符编码(UTF、ASCII)、数据加密和解密等机制是表示层的一部分。应用层提供特定于应用程序的服务,如支持最终用户进程的 FTP、HTTP、Telnet。

REST 是 应用层 中的一个 API(应用程序 编程接口)。不要让第 5 层的“Session”标题让您感到困惑。 REST 完全是第 7 层。应用程序下面是什么?操作系统。 OS 关心 REST 吗?让我们看看这个页面的响应 headers。

$ curl -svo /dev/null https://whosebug.com/q/29264855 2>&1 | grep '^[<>]'
> GET /q/29264855 HTTP/2
> Host: whosebug.com
> User-Agent: curl/7.64.1
> Accept: */*
>
< HTTP/2 200
< cache-control: private
< content-type: text/html; charset=utf-8
< last-modified: Sat, 05 Dec 2020 07:07:50 GMT
< set-cookie: prov=9bbe6161-8a11-c618-c487-ff38f7c65f3b; domain=.whosebug.com; expires=Fri, 01-Jan-2055 00:00:00 GMT; path=/; HttpOnly
<

此 REST 的品质完全在于您在此处看到的 HTTP headers。除了将其交付给“客户端应用程序”之外,操作系统是否会对其中的任何内容执行任何操作?不,它没有。

REST 不是两个系统进行通信的协议。 REST 是一种架构风格。它主要 在 HTTP 之上,应用层。