3

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

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

现在我遇到了两个问题:

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

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

4

1 回答 1

1

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

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

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

抽象资源

不受模型支持的资源(纯粹用作其他资源的基类)应声明为抽象的。

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

现在,回到您的用例:

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

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

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

包含相关资源

默认情况下,端点可以返回与原始数据相关的资源。

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

JR也完全支持此功能。

于 2016-06-07T17:38:00.883 回答