最常见的API URI命名方法是使用HTTP和WebSocket协议处理相似的请求?有什么通用约定吗?
假设我们有一个HTTP请求返回用户集合:
localhost/users
此请求应返回已注册用户的列表。 在类似的WS请求中,服务器应打开WebSocket通道,并在每次列表更新(例如,添加或删除用户等)时通过该通道向客户端发送用户列表。
WebSocket请求的URI应该如何?
我看到几个选项:
它可能是相同的,localhost/users
。区别仅应在请求标头(Upgrade: WebSocket
)中。缺点是,由于具有相同URI的请求根据提供的标头返回不同的响应,因此可能会造成混淆。
localhost/users-ws
。每当我对HTTP请求有类似的WS请求时,API都会增长,这对我来说似乎有点丑陋
localhost/users/ws
。这消除了使用变量扩展URI的可能性,例如,我们不能再在这里使用localhost/users/{id}
。
将所有WS请求存储在公共ws
域-localhost/ws/users
下。这也很丑陋,因为我们破坏了URI中域的顺序,并且无法将具有users
域的请求重定向到特定的处理程序
因此,在星期一,我看不到没有明显缺点的选项:)
如果有人可以提供将WS和HTTP一起使用的大型项目(例如StackOverflow或GitHub)的示例,那将非常有帮助。
答案 0 :(得分:0)
我不知道WebSocket的任何通用命名约定,但是对于Web API,有一个命名约定以/api/
(例如api.example.com/api/users
)开始路由。
按照这种做法,可以说example.com/ws/users
可能是一个适合使用的路由名称。