Rest 同时使用HTTP和WebSocket时的API命名约定

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。差异应该只存在

对于同时使用HTTP和WebSocket协议进行类似请求的API,最常用的URI命名方法是什么?这方面有什么共同的惯例吗

假设有一个HTTP请求返回用户集合:

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请求存储在公共
    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请求。谢谢你的回复!