一个简单的问题:如果我不通过 HTTP POST/PUT 方法在我的资源上发送数据(内容)怎么办——它仍然是 RESTful 吗?
显然,问题是在哪种情况下我想在没有数据的情况下使用 PUT。想象一个用户想要重置他/她的密码(就像在这个旧主题中一样)。
你怎么看呢?可以不使用 POST/PUT 方法发送内容吗?我个人对此没有任何问题,但我只是好奇其他人会怎么说。
是的,这是完全可以接受的。在没有数据的情况下执行每个操作(POST 到集合,PUT 到资源)都应该创建一个新的“空”资源。这里“空”的定义取决于所代表的内容。
但是,在重置用户密码的特定情况下,我不会说上述模型适用。如果确实存在密码资源,则没有数据的 PUT 似乎建议将密码设置为空,而不是重置密码。对于这种情况,我会选择该问题的公认答案。
您不需要 POST 或 PUT 中的数据即可使其成为 Restful。如果您正在做的事情是非幂等的(意味着请求将修改或创建资源),您不想使用 GET(无论是否有任何数据要传递)。例如,您可能有一个 RESTful Web 服务,它将请求的时间和资源 url 命中视为创建或修改某些资源所需的全部 - 不需要请求数据!