2017-03-20 1 views
1

私たちはJSON-API標準を使用してAPIを開発しています。JSON API:リソースなしのSuccesメッセージ

ユースケースは以下の通りです:

は、あなたがメーリングリストに加入することを可能にするAPIエンドポイントがあります。 可能なフローの1つは、ユーザーがPENDINGとして追加されていることです。 は、ユーザーが確認のために電子メールを受信して​​オプトインすることを意味します。

この場合、フロントエンド にメッセージを返信して、ユーザーに表示できるようにして、リンクをクリックするよう促します。

私の見解からすれば、これは本当にエラー状態ではなく、より多くのフォローアップメタ情報です。つまり、エラーメッセージに入れるのは概念的に論理的ではありません。また、エラーメッセージに入れても、フロントエンドは「本当のエラー」とは何とか区別しなければなりません(ステータスコードの分解能は低いので、衝突は避けられません)。

ただし、リソースにメタ情報として追加することはできません。だから私はこの情報をどこに置くべきか分かりません。

「レスポンス」リソースを定義してそこに入れるのが1つの解決策ですが、それはちょうどワームのように思えるでしょう。

アイデア?入力が大きく評価される

答えて

1

呼び出しの結果、ユーザーがメーリングリストに追加された場合は、200 OKを返します。電話の結果、ユーザーが電子メールでオプトインする必要がある場合は、202 Acceptedを返します。関連する情報を含む202の応答オブジェクトを返します。スペックから

202(承認)ステータスコードは、要求が処理のため 受け入れられたことを示しているが、処理が完了していません。 処理が実際に行われるときには、 が許可されない可能性があるため、最終的に要求が実行される場合もありません。非同期の オペレーションからステータスコードを再送信するためのHTTPには、 機能はありません。

202応答は意図的にコミットされません。その目的は、 が、サーバへのユーザエージェントの接続が、処理が完了するまで、 を継続することを要求することなく、 がサーバに何らかの他のプロセス(おそらくは バッチ指向のプロセス)の要求を受け入れることを可能にすることです。 。この 応答で送信された表現は、要求の現在の状態を記述し、 (要求が実行されるときの の推定値をユーザに提供できるステータスモニタを指す)を指すべきです。

+0

私は、リソースごとではなくトップレベルの_metaカテゴリを持つResponseオブジェクトを返すことができます。これはあなたが成功のメッセージのために奨励するものか、別の選択肢を持っていますか? – shokora

+1

私は、フォローアップのメールを持っていないリクエストについては200/204を返します(あなたが身体を望むなら200、そうでないなら204)。フォローアップメールが必要なリクエストについては、提供したいメッセージなど、関連する情報が含まれている本文を202として返信します。励ましのメッセージはメタ情報ではないと私は考えています。 –

+0

最後の文章が何を意味するのかよく分かりません。あなたは励ましのメッセージを含む身体を返しますが、メタ・フィールドには戻っていないと言いますか?あなたはどこに置くのですか?または、json-api仕様を検討していませんか? – shokora

関連する問題