2012-12-22 3 views
3

컬렉션 소스에 POST 요청 (예 : /posts)이 요청 된 Liberator를 사용하여 컬렉션 리소스를 구현하려고합니다. 괜찮아. 작동하지 않는 이유는 201 Created 응답을 사용하여 POST 요청에 응답하는 것입니다 (예 : /posts/1). 새 URL을 가리키는 Location 헤더가 포함됩니다.Liberator에서 201 생성 된 응답의 위치 헤더 반환

나는 201 Created로 응답 할 수 있습니다, 그러나 나는 Location 헤더 응답, 따라서 클라이언트가 새로운 URL이 무엇인지 알 수 없습니다, 또는 대안 내가 :post-redirect? true을 설정할 수 있으며,을 반환을 포함 할 수 아니에요 응답 Location 헤더와 함께 303 See Other 응답.

해방자 POST 핸들러에서 201 CreatedLocation 헤더를 반환하는 방법이 있나요?

답변

3

모든 핸들러는 링 응답을 사용하여 헤더를 포함한 전체 링 응답을 반환 할 수 있습니다 게시물 : 예를 들어, 내가 사이의 거리를 좋아

(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}})) 
+1

감사합니다! and : handle-created. 하지만 바인딩 양식 : handle-created는 (fn [{l : location}] ...) 올바르게 컴파일해야합니다. – squiddle

+0

@squiddle 감사합니다. 오류를 수정했습니다. – ordnungswidrig

+0

': : headers { "Location" "/ test"}}'from :'handle-created' fn은 리디렉션 대신 "headers"라는 단어가있는 HTML 표 본문을 렌더링합니다. –