rest api 在每个请求上传递参数

rest api passing parameter on every request

我有一个休息 api,其中组织作为顶级对象,所有其他数据都属于一个组织,例如订单、发票、项目等..

用户可以属于多个组织,在我的前端 SPA 上,我希望他们一次登录到一个应用程序,并且可以切换。

我应该在客户端存储当前的组织 ID 并在每个请求中传递它,还是我应该有一个休息端点来设置用户的当前组织 ID table 等等,这也意味着当他们回来登录时,它已经设置为他们访问的最后一个组织。

一般来说,无状态 API 相当普遍。例如,您可能会在每个请求中传递一个身份验证令牌 (JWT),它标识用户并可能提供有关用户的其他信息。

如果您正在使用 Laravel,您可能需要查看这个包来处理 JSON Web 令牌:https://github.com/tymondesigns/jwt-auth。然后您可以在登录时序列化您的用户 object,其中还可以包括他们当前的组织。然后前端可以在每个请求中传递此令牌(作为授权 Header)

Should I be storing the current organization id on the client side and passing it with every request?

, 一般做法是在每个 API 中发送信息,因为 API 是无状态的。

Should I have a rest endpoint that sets the current org id on the user table?

NO 你不应该,原因之一是假设用户登录浏览器 1,你将在 table 中存储该 organizationId,同一用户从浏览器 2 登录,这将覆盖您之前的 ID

现在,如果您返回浏览器 1,它将有不一致的数据,除非您设计了一种机制来不覆盖以前的值。

希望说得通