3

我正在尝试使用 Liberator 实现一个集合资源,其中POST对集合 URL(例如)的请求/posts将创建一个新的博客文章项目。这工作正常。不工作的是使用包含指向新 URL 的标头(例如)POST的响应来响应请求。201 CreatedLocation/posts/1

我可以使用 a 进行响应201 Created,但是我无法包含Location标头响应,因此客户端将不知道新 URL 是什么,或者我可以设置:post-redirect? true,并返回303 See Other带有标头的响应Location

有没有办法从 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 回答