3

POSTコレクション URL へのリクエスト (例: /posts) が新しいブログ投稿アイテムを作成する、Liberator を使用してコレクション リソースを実装しようとしています。それはうまくいっています。機能していないのは、新しい URL を指すヘッダーを含む応答でPOST要求に応答することです (例: )。201 CreatedLocation/posts/1

で応答できます201 Createdが、ヘッダー応答を含めることができないLocationため、クライアントは新しい URL が何であるかを知ることができません。または、代わりに を設定して、ヘッダーで応答を:post-redirect? true返すこともできます。303 See OtherLocation

Liberator POST ハンドラーから a201 Created ヘッダーを返す方法はありますか?Location

4

1 に答える 1

3

すべてのハンドラーは、ring-responseを使用して、ヘッダーを含む完全なリング応答を返すことができます。

(defresource baz
  :method-allowed? true
  :new? true
  :exists? true
  :post! (fn [ctx] {::location "http://example.com"})
  :post-redirect? false 
  :handle-created (fn [{l ::location }] 
                    (ring-response {:headers {"Location" l}}))
于 2013-01-06T21:43:22.490 に答える