gpt4 book ai didi

ruby-on-rails - JSONAPI 响应非资源数据的最佳方式,如使用 jsonapi-resources 的访问 token

转载 作者:行者123 更新时间:2023-12-04 06:06:46 25 4
gpt4 key购买 nike

我正在实现此 API,我做的第一件事是使用访问 token 登录。我正在使用 jsonapi-resources gem https://github.com/cerebris/jsonapi-resources

我现在有两个问题。如果成功,我想返回一个用户和生成的访问 token ,否则返回一条失败消息。

现在我遇到了两个问题:

1- 第一个是,我如何返回这种数据(用户记录加上访问 token )。阅读 JSONAPI 规范我相信复合文档是可行的方法,但我该如何使用这个 gem 来实现

2- 我如何使用这个 gem 响应非 CRUD 路由(如登录)?我必须在 Controller 中做些什么吗?在这种情况下我该如何处理资源对象?

最佳答案

没有非资源数据这样的东西。您可以根据资源对几乎所有内容进行建模。

这些资源不必直接映射到表,甚至不必作为持久层中的可识别实体存在。从 api 消费者的角度来看,资源表示是实际的数据库行或文档还是按需产生的完全抽象的实体几乎无关紧要。

使用 JR 实现抽象资源非常简单并且受支持 out of the box :

Abstract Resources

Resources that are not backed by a model (purely used as base classes for other resources) should be declared as abstract.

Because abstract resources do not expect to be backed by a model, they won't attempt to discover the model class or any of its relationships.

现在,回到您的用例:

  1. 这可以建模为与(多对一关联)用户资源相关的 AuthToken 资源(具有单个属性)。在您的情况下,您的用户资源可能与 AuthToken 资源一起包含在同一 API 响应中。

  2. 同样,如果您围绕资源对整个域进行建模,那么任何和所有操作都可以建模为 CRUD 操作。登录只是创建一个 UserSession 资源。

JSON:API 规范 allows包含相关资源:

Inclusion of Related Resources

An endpoint MAY return resources related to the primary data by default.

An endpoint MAY also support an include request parameter to allow the client to customize which related resources should be returned.

这个特征是fully supported也是 JR 的。

关于ruby-on-rails - JSONAPI 响应非资源数据的最佳方式,如使用 jsonapi-resources 的访问 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37685251/

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