3

この API を実装しています。最初に行ったのは、アクセス トークンを使用したログインです。jsonapi-resources gem https://github.com/cerebris/jsonapi-resourcesを使用しています

私は今2つの問題を抱えています。成功した場合はユーザーと生成されたアクセストークンを返し、それ以外の場合は失敗メッセージを返したいと思います。

今、私は2つの問題を抱えています:

1- 最初の 1 つは、この種のデータ (ユーザー レコードとアクセス トークン) を返す方法です。JSONAPI 仕様を読むのcompound documentがよい方法だと思いますが、この gem でどうすればそれを行うことができますか?

2- この gem を使用して、ログインなどの非 CRUD ルートに応答するにはどうすればよいですか? コントローラで何かを作成する必要がありますか? この場合、リソースオブジェクトをどのように処理できますか?

4

1 に答える 1

1

非資源データなどというものはありません。リソースに関しては、ほとんどすべてをモデル化できます。

これらのリソースは、テーブルに直接マップする必要はなく、永続化レイヤーに識別可能なエンティティとして存在する必要さえありません。API コンシューマの観点からは、リソース表現が実際のデータベース行またはドキュメントであるか、またはオンデマンドで呼び出される完全に抽象的なエンティティであるかどうかは、ほとんど無関係です。

JR を使用した抽象リソースの実装は簡単で、すぐに使用できます

抽象的なリソース

モデルによってサポートされていないリソース (純粋に他のリソースの基本クラスとして使用される) は、abstract として宣言する必要があります。

抽象リソースはモデルによってサポートされることを想定していないため、モデル クラスやその関係を発見しようとはしません。

ここで、ユースケースに戻ります。

  1. これは、User リソースに関連する (多対 1 の関連付け) AuthToken リソース (単一の属性を持つ) としてモデル化できます。また、あなたの場合、ユーザー リソースが AuthToken リソースと一緒に同じ API 応答に含まれる場合があります。

  2. 繰り返しになりますが、リソースを中心にドメイン全体をモデル化すると、すべてのアクションを CRUD アクションとしてモデル化できます。ログインは UserSession リソースを作成するだけです。

JSON:API 仕様により、関連するリソースを含めることができます。

関連リソースの包含

エンドポイントは、デフォルトでプライマリ データに関連するリソースを返す場合があります。

エンドポイントは、クライアントがどの関連リソースを返す必要があるかをカスタマイズできるようにするために、インクルード リクエスト パラメータもサポートする場合があります。

この機能は、JR でも完全にサポートされています。

于 2016-06-07T17:38:00.883 に答える