gpt4 book ai didi

RESTful 操作方式

转载 作者:行者123 更新时间:2023-12-03 07:10:05 26 4
gpt4 key购买 nike

我想要一个不违反 REST 原则的 RESTful 接口(interface)。这是更多讨论的问题,您将如何做以及您认为最好的解决方案是什么。想象一下这个应用场景。

应用程序具有典型的用户和他们聚集进行交互的房间。每个 HTTP 请求都包含 HTTP 基本身份验证 header ,其中包含用户与资源交互的信息。让我们考虑一下/rooms URL 下的房间资源。我希望有 RESTful 方法+URI 来处理用户创建房间(并且不加入他,只提供可以加入该房间的数据)、加入房间和离开房间时的操作。我想到的是:

创建房间

POST /rooms --data {room data}

加入和离开空间可能类似于下面的代码,

PUT/DELETE /rooms/{roomId}/{userId}

正如你所看到的,我需要传递 userId,它应该是来自 HTTP header 的上下文信息,所以我猜我不应该在 URL 中传递它。这里的问题是,在创建房间期间,我让用户进入房间,但他们具有“not_joined”状态。因此,在创建之后(到目前为止尚未执行任何连接),实际上存在/rooms/{roomId}/{userId} 资源。知道如何做得很好吗?:-)

最佳答案

您的资源是一个房间,因此首先您必须考虑:

POST /room

没有的'。响应将返回 Content-Location :/room/{roomId} header ,该 header 指示您房间 URI。

GET /rooms

列出所有房间。

然后您可以考虑用于加入操作的资源 URI:

/room/{roomId}/join/{joinId}

让用户加入特定房间:

POST /room/{roomId}/join --data <join userId="{userId}" />
Response header : **Content-Location : /room/{roomId}/join/{joinId}**

用户离开特定房间:

DELETE /room/{roomId}/join/{joinId}

获取特定房间的“加入”列表:

GET /room/{roomId}/joins
Response content :
<joins>
<join id="888" userId="100" />
<join id="889" userId="101" />
<join id="890" userId="102" />
</joins>

对于特定用户:

GET /user/{userId} 
Response content :
<user id="100" name="john" />

对于允许的用户:

POST /room/{roomId}/allowed 
--data
<allowed>
<user id="100">
<user id="101">
<user id="102">
<user id="103">
</allowed>

关于RESTful 操作方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7316317/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com