我可以在RESTful服务中使用TCP吗?

fun*_*gdu 14 .net c# rest wcf

REST正在使用Web的当前功能并在其上应用一些原则以提高其效率.它使用标准HTTP动词进行通信,并利用其无状态特性.

但是,REST服务是否可以使用TCP协议进行通信?如果是,那么它会违反其原则吗?

Dar*_*rov 23

HTTP是基于TCP/IP的协议.因此,当您使用REST时,您已经在使用TCP进行通信.但是如果你想在纯TCP套接字上使用REST,没有HTTP,那么不,这没有意义,因为REST基于HTTP动词和头文件.这些概念仅存在于HTTP协议中.

  • 您只能将REST用于HTTP. (4认同)
  • @MBen理论上你是对的.REST只是如何访问资源的想法.实际上它只与HTTP一起使用.如果有人在谈论REST,他/她肯定会谈论HTTP. (3认同)

Гео*_*иев 9

REST 是一种架构风格(或一组约束)。碰巧 HTTP 可以轻松匹配所有这些约束。最重要的是,许多 HTTP/1.1 基础设施已经支持它:服务器、代理、缓存、客户端库、解析器等。像这样:

HTTP 和 REST 的关系

系统可以从头开始构建到 RESTful 而不是依赖于 HTTP 吗?当然。来自Roy Fielding 本人的权威来源:

REST API 不应依赖于任何单一的通信协议。

如果您阅读这篇文章或实际上Roy 的论文,您会意识到,如果您尝试遵循所有约束,您最终会得到看起来和行为与现代 HTTP 非常相似的东西,尽管它可能缺乏大部分基础设施支持HTTP 有。那么问题来了:值得吗?

此外,如果您查看大多数 RESTful 服务,它们很少是完全 REST 服务。这就是为什么他们称自己为“RESTful 服务”而不是“REST 服务”。顺便说一句,该站点的 API 非常接近于完整的 REST 实现。