我想有一个不违反REST原则的RESTful接口。这是一个更多的讨论问题,你会如何做,你认为什么是最好的解决方案。想象一下这个应用场景。
应用程序有典型的用户和房间,他们聚集在一起进行交互。每个HTTP请求都包含HTTP基本身份验证头,它提供用户与资源交互的信息。让我们考虑一下/rooms地址下的房间资源。我想让RESTful method+URI在用户创建房间(并且不加入他,只提供可以加入这个房间的人)、加入房间和离开房间时处理操作。我的脑海中浮现的是:
创建房间
POST /rooms --data {room data}加入和离开房间可能看起来像下面代码,
PUT/DELETE /rooms/{roomId}/{userId}正如您所看到的,我需要传递userId,它应该是来自HTTP头的上下文信息,所以我想我不应该在URL中传递它。这里的问题是,在创建房间的过程中,我让用户在房间中,但他们的状态是"not_joined“。所以在创建之后(到目前为止还没有执行join ),实际上有/rooms/{roomId}/{userId}资源。你知道怎么做好吗?:-)
发布于 2011-09-06 15:57:56
您的资源是A房间,所以首先您必须考虑:
POST /room没有的‘’。响应将返回房间Content-Location://{roomId}头,指示房间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>https://stackoverflow.com/questions/7316317
复制相似问题