Rest 同时使用HTTP和WebSocket时的API命名约定
对于同时使用HTTP和WebSocket协议进行类似请求的API,最常用的URI命名方法是什么?这方面有什么共同的惯例吗 假设有一个HTTP请求返回用户集合:Rest 同时使用HTTP和WebSocket时的API命名约定,rest,api,http,websocket,naming-conventions,Rest,Api,Http,Websocket,Naming Conventions,对于同时使用HTTP和WebSocket协议进行类似请求的API,最常用的URI命名方法是什么?这方面有什么共同的惯例吗 假设有一个HTTP请求返回用户集合: localhost/users 此请求应返回已注册用户的列表。 在类似的WS-request中,服务器应打开WebSocket频道,并在每次更新用户列表(例如,添加或删除用户等)时通过该频道向客户端发送用户列表 WebSocket请求的URI应该是什么样子 我看到几个选择: 它可能是相同的,localhost/users。差异应该只存在
localhost/users
此请求应返回已注册用户的列表。
在类似的WS-request中,服务器应打开WebSocket频道,并在每次更新用户列表(例如,添加或删除用户等)时通过该频道向客户端发送用户列表
WebSocket请求的URI应该是什么样子
我看到几个选择:
localhost/users
。差异应该只存在于请求头中(升级:WebSocket
)。缺点是它可能会混淆,因为具有相同URI的请求根据提供的头返回不同的响应localhost/users-ws
。这对我来说似乎有点难看,因为每次我们对HTTP请求有类似的WS-request时,API都会增长localhost/users/ws
。这打破了使用变量扩展URI的可能性,例如,我们不能再在这里使用localhost/users/{id}
WS
domain-localhost/WS/users
下。这也很难看,因为我们打破了URI中域的顺序,无法将用户的请求重定向到特定的处理程序
如果有人能提供诸如StackOverflow或GitHub之类的大型项目的示例,其中WS和HTTP一起使用,这将非常有帮助。我不知道WebSocket有任何常见的命名约定,但对于web api,有一种命名约定,可以使用
/api/
启动路由,示例api.example.com/api/users
按照这种做法,可以认为
example.com/ws/users
可能是一个合适的路线名称。您是否得出过任何结论?在考虑了上述命名选项后,我们决定停止您提出的约定:/api/path
用于HTTP请求,而/ws/path
用于WebSocket请求。谢谢你的回复!