login 和 get profile 应该是两个不同的 api 端点吗?
Should login and get profile be two different api endpoints?
我正在为移动应用程序设计 api。
我不确定我是否应该有一个端点 login
它将 return 令牌和用户配置文件
或者有两个端点并在 login
调用 getProfile
端点之后。
我看到人们大多使用第二种选择,但我看不到这种方法的好处?
考虑 single-responsibility 原则(基本上说“API 方法应该真正做好一件事”),我建议将它们分成两个独立的部分:
POST /login
将建立一个会话,return 会话 ID 将在后续请求中使用。
如果提供了有效的会话 ID,GET /profile
将 return 配置文件信息。
将这些结合起来沿着“快乐之路”有明显的好处,主要是在登录操作完成后,您会自动为用户提供他们接下来最明显想要的数据(用户是谁)。为什么要浪费一个额外的 API 电话来找出它,对吧?
如果这就是您 API 需要支持的全部内容,那么没有理由将它们分开。但有几个案例我可以想到为什么你可能希望它们分开:
- 如果现有 logged-in 用户想要获取最新的个人资料信息怎么办?这意味着您无论如何都必须支持
GET /profile
(或者让他们再次 POST /login
,这是浪费)。
- 如果配置文件信息已缓存并且
POST /login
API 调用仅发生在应用程序内的 re-authenticate 用户以完成操作怎么办?发送不需要的数据会浪费带宽。
此外,当您让每个 API 方法执行它们暗示它们所做的一件事时,测试通常会更容易一些(POST /login
登录用户,GET /profile
获取当前logged-in 用户的个人资料)。
我正在为移动应用程序设计 api。
我不确定我是否应该有一个端点 login
它将 return 令牌和用户配置文件
或者有两个端点并在 login
调用 getProfile
端点之后。
我看到人们大多使用第二种选择,但我看不到这种方法的好处?
考虑 single-responsibility 原则(基本上说“API 方法应该真正做好一件事”),我建议将它们分成两个独立的部分:
POST /login
将建立一个会话,return 会话 ID 将在后续请求中使用。
如果提供了有效的会话 ID,GET /profile
将 return 配置文件信息。
将这些结合起来沿着“快乐之路”有明显的好处,主要是在登录操作完成后,您会自动为用户提供他们接下来最明显想要的数据(用户是谁)。为什么要浪费一个额外的 API 电话来找出它,对吧?
如果这就是您 API 需要支持的全部内容,那么没有理由将它们分开。但有几个案例我可以想到为什么你可能希望它们分开:
- 如果现有 logged-in 用户想要获取最新的个人资料信息怎么办?这意味着您无论如何都必须支持
GET /profile
(或者让他们再次POST /login
,这是浪费)。 - 如果配置文件信息已缓存并且
POST /login
API 调用仅发生在应用程序内的 re-authenticate 用户以完成操作怎么办?发送不需要的数据会浪费带宽。
此外,当您让每个 API 方法执行它们暗示它们所做的一件事时,测试通常会更容易一些(POST /login
登录用户,GET /profile
获取当前logged-in 用户的个人资料)。