在一次面试中,我被问及需要将REST API范式分类到OSI层之间。
我认为它应该介于第5层和第7层之间;然而,面试官说它只属于第5层,因为它类似于RPC。
在我看来,它不能仅仅是第5个会话层,因为真正的REST API是无状态的,不像会话(HTTP会话),所以它可以被放置在第7层(应用程序)作为协议,因为它就像HTTP(但为什么不在第6层呢?)。
我在网上搜索了一下,但没有找到明确的答案(我知道有些协议在OSI层中分布得很模糊)。
也许其他人对此有更清晰的看法?
在一次面试中,我被问及需要将REST API范式分类到OSI层之间。
我认为它应该介于第5层和第7层之间;然而,面试官说它只属于第5层,因为它类似于RPC。
在我看来,它不能仅仅是第5个会话层,因为真正的REST API是无状态的,不像会话(HTTP会话),所以它可以被放置在第7层(应用程序)作为协议,因为它就像HTTP(但为什么不在第6层呢?)。
我在网上搜索了一下,但没有找到明确的答案(我知道有些协议在OSI层中分布得很模糊)。
也许其他人对此有更清晰的看法?
REST不是两个系统进行通信的协议。REST是一种架构风格,它大多数情况下基于应用层HTTP。
REST是应用程序接口(API)中的REST(Representational State Transfer),位于应用层。不要让第5层的“会话”标题使您感到困惑。 REST完全属于第7层。应用程序以下是操作系统。操作系统是否关心REST?让我们看看此页面的响应标头。
$ curl -svo /dev/null https://dev59.com/Rl4b5IYBdhLWcg3wXAV1 2>&1 | grep '^[<>]'
> GET /q/29264855 HTTP/2
> Host: stackoverflow.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=.stackoverflow.com; expires=Fri, 01-Jan-2055 00:00:00 GMT; path=/; HttpOnly
<
使得这个REST具有优越性的完全在于你在这里看到的HTTP头。操作系统是否会对其中任何一个进行处理,除了将其传递给“客户端应用程序”之外?不会。