我有一个API,允许玩家“探索”一个区域,该区域会随机返回资源。此类操作会消耗一些游戏币,因此玩家信息会随之更新。因为客户端使用此 API 来“获取”某些资源,所以很自然地认为它应该是 HTTP GET。然而,GET 应该是幂等的,但事实并非如此。根据 RFC 7231:
POST方法请求目标资源处理 根据资源自己的请求包含在请求中的表示形式 具体语义。
和
PUT 方法要求目标资源的状态为 创建或替换为表示定义的状态 包含在请求消息有效负载中。
这两个请求都是为了处理随附的有效负载,这使得它们不太适合我的情况。我应该用什么?
实际上这种行为并不真正适合REST。我想说它更像是一种 RPC 方法,因为您定义的是操作,而不是资源。 RPC 方法通常是 POST,所以我认为这就是正确的方法。
(a) 不要再看 RFC 2616;在这种情况下,相关的是 RFC 7231。
(b) 如果没有更具体的方法适合您,POST 是您的朋友。