JSONAPI使用jsonapi-resources响应访问令牌等非资源数据的最佳方法

时间:2016-06-07 17:04:36

标签: ruby-on-rails ruby-on-rails-4 json-api jsonapi-resources

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

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

现在我遇到了两个问题:

1-第一个是,如何返回此类数据(用户记录加上访问令牌)。阅读JSONAPI规范我相信compound document是可行的方法,但我怎么能用这个宝石来做

2-如何使用此gem响应登录等非CRUD路径?我是否必须在控制器中制作一些东西?在这种情况下如何处理资源对象?

1 个答案:

答案 0 :(得分:1)

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

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

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

  

抽象资源

     

未由模型支持的资源(纯粹用作基类   对于其他资源)应该被声明为抽象。

     

因为抽象资源不希望由模型支持,所以它们   不会试图发现模型类或其任何关系。

现在,回到您的用例:

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

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

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

      

    包含相关资源

         

    端点可以返回与主数据相关的资源   默认值。

         

    端点也可以支持包含请求参数以允许   客户端自定义应返回的相关资源。

    此功能也是JR的fully supported