REST API 架构

REST API architecture

刚开始构建RESTAPI参考this guide。 这是我第一次构建 REST API 架构,所以有些模棱两可。

  1. POST 与 GET

在学习 REST API 之前,当我不想公开表单数据(例如用户 ID、密码、phone 号码)时,我选择了 POST。 但在 REST API 中,POST 表示“创建新资源”,如果我学到的是正确的。
如果是这样,以下情况的正确方法是什么: '检查用户ID是否重复', 'find my id or password'

  1. 表示具体动作

REST API指南说用名词来表示。
我通常用动词+名词组合来命名函数或方法(例如,checkId,findPassword)。
那么什么是正确(或更好)的表示方式?

获取/user/check-id
获取 /user/id/check
获取 /user/id/duplicate

Take a look at the RESTful verbs。 POST肯定是用来创建东西的,GET是查询。话虽这么说,您绝对正确,GET URL 参数经常被记录在各处,如果它们包含敏感数据,您不应该在 GET url 中使用它们。

要检查用户 ID 是否重复,我会使用用户 ID 执行 POST,如果 HTTP 409 代码已经存在,则 return。

查找密码是另外一个问题。简而言之,不要这样做。您应该永远、永远、永远以纯文本形式存储用户密码。在当今的计算世界中,这样做是一种疏忽。重置密码应该涉及创建密码重置请求(A POST 到 /user/id/reset),这会导致通过另一个渠道发送密码请求,但永远不会 return 来自GET 请求。