2017-12-18 10 views
4

私はシンプルなサーバーAPIを持っています:HTTPステータス201作成:N個のURLを新しいリソースに戻しますか?

クライアントはファイルをアップロードできます。成功した場合、サーバーは201 Createdを返します。 httpレスポンスには、新たに作成されたリソースを指すLocationヘッダーがあります。

新しい使用例に直面する:1つのhttp要求でN個の新しいリソースを作成できるはずです。

これはHTTP仕様に従って実装する方法がわかりません。

AFAIK最も正確にはLocationヘッダーのみです。

N個のURLをhttp 201 Created応答で返すにはどうすればよいですか?

質問には「いいえ」と明記されているので、私の質問は関連していますが、次の質問と重複していません。私の質問は違う:どのように...

私の質問は "いくつかの場所のヘッダーを返すことはできますか?"ではありません。 HTTP 201作成された応答でNのURLを返す方法

Can the Location header be used for multiple resource locations in a 201 Created response?

+0

[作成された201レスポンスで複数のリソースの場所にLocationヘッダーを使用できるかどうか](https://stackoverflow.com/questions/11309444/can-the-location-header-be-used) -213-a-201-created-multiple-resource-locations) – jonrsharpe

+0

@jonrsharpeなぜ私の質問は重複していないのか説明しました。はい、両方の質問は関連していますが、それらは異なっています。 – guettli

+0

最初の答えはいいえ、2番目の答えは代替を示します。 – jonrsharpe

答えて

4

短い答え:メッセージ本文。

長い答え:

は、私はあなたがやや後方検索について行っていると思います。

HTTPの場合。ステータスコードと応答ヘッダーはメタデータです。メッセージに付随して、一般的なHTTPコンポーネントに何が起こったかを理解するためのコンテキストにとらわれない方法を与える。

概して、メタデータはデータから得られます。だからペイロードから始める。 201 CREATED応答の場合

201応答ペイロードは、典型的に記述し、作成されたリソース(単数または複数)へのリンク。

まず、この表現を作成します。 HTMLで作業している場合は、「おめでとう、すべてがうまくいった」Webページのようになり、新しいリソースへのアクセスをクライアントに提供するためのハイパーリンク付きのマークアップされたテキストがたくさん表示されます。

を実行した後、その情報を参照して、標準のヘッダーに含める必要がある情報を確認して、一般的なコンポーネントも何が起こっているのかを理解できるようにします。1つまたは複数のリソースが正常にPOSTリクエストを処理した結果として、オリジンサーバ上で作成されている場合は、オリジンサーバが201を送るべきである

は例えば、作成した(POST応答の説明を参照してください)レスポンスには、作成されたプライマリリソースの識別子(7.1.2節)を提供するLocationヘッダフィールドと、新しいリソースを参照しているリクエストのステータスを記述する表現が含まれています。

そこで主要で作成されたリソースを識別し、Locationヘッダに表現からそのリソースの識別子を持ち上げます。

2次リソースの識別子は、メッセージ本体で引き続き使用できます。これらのリソースを汎用コンポーネントに公開する必要がある場合は、Link headerを使用することもできます。

+0

この詳細な回答ありがとうございます!ただ1つの問題:「プライマリ」または「セカンダリ」リソースはありません。注文のない一連のリソースがあります。しかし、リンクヘッダーはよく見えます。 – guettli

7

あなたは、応答の新しいタイプを提案している、rfc4918を見てみましょう207(マルチステータス)、REST & WOA Wikiからコピーされ、簡単な説明ができます

マルチステータス応答は、内の複数のリソースに関する情報を伝えます複数のステータスコードが適切な場合があります。デフォルトのMulti-Statusレスポンスボディは、 'multistatus'ルート要素を持つtext/xmlまたはapplication/xml HTTPエンティティです。その他の要素には、メソッド呼び出し中に生成される200,300,400,500シリーズのステータスコードが含まれています。 100シリーズのステータスコードは、「応答」XML要素に記録してはならない(SHOULD NOT)。

関連する問題