gpt4 book ai didi

c# - ServiceStack 请求参数或 session 变量?

转载 作者:太空宇宙 更新时间:2023-11-03 10:49:00 24 4
gpt4 key购买 nike

我正在研究一个典型的业务线应用程序,它使用 ServiceStack 作为 REST 服务层。登录该系统的所有用户都将与公司实体相关联。因此,Company.Id 是我所有服务方法的基本参数。如果每个请求都需要信息,那么将它存储在经过身份验证的用户的 session 中似乎是最合适的。

  1. 我是否应该将 CompanyId 添加到每个请求 dto 以使每个 dto 无状态?

  2. 同样,我是否应该将我的路由从 /user/15 重构为 /company/1/user/15

这可能更像是一个一般性的 REST 问题,但很好奇是否有特定于 ServiceStack 的解决方案/建议。

最佳答案

如果您的用户正在处理特定于公司的数据,那么您将要考虑是否为路由添加前缀 /company/{CompanyId}。正如我所看到的,这样做的决定归结为一些关于用户如何与他们有关联的公司或公司互动的问题。

我创建了这个流程图来展示我将如何决定处理这种情况。

Flow

我个人有这样一种情况,用户与多家公司相关联,并选择有一条可以更改事件公司的路线,然后所有请求都只需从 session 中读取事件公司。这使我不必在每个请求上验证和验证公司 ID,我只在他们更改上下文时执行一次。但如流程图所示,这只有在它们不频繁切换时才有用。

Should I add CompanyId to every request dto to make each dto stateless?

请记住,stateless 意味着必须在每次请求时验证和验证 CompanyId

另一个考虑因素,如果 API 是公开的并且您希望允许针对不同的公司,那么请在路由中选择 CompanyId。如果使用您的公共(public) API 的人忘记在后续请求之前设置正确的活跃公司,他们可能会犯错误。但是,如果 API 是私有(private)的,您将能够在您的应用程序中设置事件的公司上下文,所以一切都应该没问题。

希望这对您有所帮助。

关于c# - ServiceStack 请求参数或 session 变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22213663/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com