2013-04-16 4 views
0

나는 (링과 콤보를 사용하여) 상태 메시지를 변경해야하는 서비스를 clojure에 작성하고있다. 그것은 내가부두 사용자 정의 상태 메시지 ??

200 OK 

을 가지고 있고 나는 EJB 세계에서

200 <custome message> 

같은 것을하고 싶습니다 예를 들어 내장 부두 8에서 실행이 "헤더를 설정하는 가능성했다 X-HTTP- Status-Message "는 장면 뒤에 숨은 마술을하고 응답으로 메시지를 변경했습니다.

Jetty에서 동일한 작업을 수행 할 수있는 헤더가 있습니까? 또는 그것을 할 clojure에 다른 방법이 있습니까 ??

답변

0

그런 마법의 헤더가 없습니다.

상태 이유는 Jetty의 동일한 호출에서 상태 코드와 함께 설정되어야합니다.
javax.servlet.http.HttpServletResponse.setStatus(int, String) 또는 org.eclipse.jetty.server.Response.setStatus(int, String)을 사용할 수 있습니다.

예 : 일부 오류 조건이 상태 이유를 오버라이드 (override) 할 수없는

@Override 
protected void doGet(HttpServletRequest request, HttpServletResponse response) 
throws ServletException, IOException 
{ 
    response.setStatus(HttpServletResponse.SC_OK, "Alrighty"); 
} 

참고. 하지만 일반적으로 HttpServletResponse.sendError(int, String)의 사용은 예상대로 작동합니다.

0

가 링 문서에 따르면, 만 상태 코드를 설정할 수 없습니다 메시지 : 또한

https://github.com/mmcgrana/ring/wiki/Concepts

에서, ring.util.servlet/set-status 기능 javax.servlet.http.HttpServletResponse .setStatus(int) 호출 :

(defn set-status 
    "Update a HttpServletResponse with a status code." 
    [^HttpServletResponse response, status] 
    (.setStatus response status)) 

전체 구현은 여기에 있습니다 : https://github.com/ring-clojure/ring/blob/master/ring-servlet/src/ring/util/servlet.clj#L64

반지를 변경하여 선택 사항 인 su를 추가하는 것은 매우 간단합니다. 상태 메시지에 대한 포트.

나는 변화가 ring.util.servlet/update-servlet-response 기능을 도입 할 수 있다고 가정합니다

(defn update-servlet-response 
    "Update the HttpServletResponse using a response map." 
    [^HttpServletResponse response, {:keys [status headers body]}] 
    (when-not response 
    (throw (Exception. "Null response given."))) 
    (when status 
    (set-status response status)) 
    (doto response 
    (set-headers headers) 
    (set-body body))) 

예를 들어 응답 맵에 상태 메시지 키를 추가하여.

https://github.com/ring-clojure/ring/blob/master/ring-servlet/src/ring/util/servlet.clj#L105