我实现了一个auth端点,它接受电子邮件和密码,并返回一个JWT令牌。在JWT内部,有一个包含用户ID的有效负载。从REST/JWT标准的角度来看,这些方法中有哪些是重要的?
/users/user_id资源,并使用解码的user_id和令牌/auth端点返回带有令牌的整个用户对象。(我的问题是实现/库无关,以及api设计模式)
发布于 2020-11-26 23:36:17
是/不是。
终点是功能。从这个角度看,他们做什么并不重要,只要客户意识到这就是将要发生的事情,并且乐于处理输出/结果。
因此,如果您编写了唯一的客户机,并且有一个连续调用的六个操作序列,那么将它们折叠为一个执行所有操作的调用可能是有意义的。
但是,如果您不编写唯一的客户端,那么这种复杂的端点很有可能会使他们的生活更加艰难。这就像试图得到一份文件,并必须核实你是否有医疗保险。最好有较小的简洁的操作,让这些其他客户选择和选择的方式和时间。
中间立场是通过选择加入来提供少量的公共链。
至于休息,是的,这很重要。
REST的两大优点是,服务器不必保持连接状态,而中介体可以缓存结果以分发给它们的受众,以减少服务器上的总体负载。
JWT令牌不适合这个模型。你不想让它们被缓存,你不想让它们共享。
不过,其他数据可能完全可以缓存。也许不是机密的用户数据,但是如果这些细节是公开的用户信息,就可以了。
这两种类型的混合消除了REST系统的好处之一。不是世界末日,但如果你想获得可伸缩性,这是一个反模式。
发布于 2020-11-26 23:40:12
如果您真的想遵循REST模式,您应该只返回用户ID,然后将客户端请求用户数据放在一个单独的端点中(每个端点只负责一件事情)。根据用例的不同,这对客户端来说可能是乏味的/烦人的。
如果您认为每次用户在进行身份验证后都需要/需要他们自己的信息,那么您最好通过授权调用返回该信息。
对于我自己的应用程序,为了方便起见,我通常只在身份验证期间返回用户信息,并减少对服务器的调用。
https://softwareengineering.stackexchange.com/questions/419384
复制相似问题