关于 ruby?? on rails:JSONAPI best way for response a non-resource data like a access token with jsonapi-resources

JSONAPI best way for responding a non-resource data like a access token with jsonapi-resources

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

我现在有两个问题。我想在成功的情况下返回用户和生成的访问令牌,否则返回失败消息。

现在我遇到了两个问题:

1- 第一个是,我怎样才能返回这种数据(用户记录加上访问令牌)。阅读 JSONAPI 规范我相信 compound document 将是要走的路,但我怎么能用这个 gem

2- 如何使用此 gem 响应登录等非 CRUD 路由?我必须在控制器中做点什么吗?在这种情况下如何处理资源对象?


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

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

使用 JR 实现抽象资源很简单,并且开箱即用:

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.

现在,回到您的用例:

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

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

  • JSON:API 规范允许包含相关资源:

    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.

    JR 也完全支持此功能。