2012-10-20 4 views
6
([compojure "1.0.1"])는 항상 아래 추가 랩 PARAMS 등 코드 샘플에도 불구하고, 빈 매개 변수지도를받는

내 Compojure 웹 응용 프로그램 : 나는 시도했다Compojure 경로가 PARAMS 빈

(defroutes public-routes 
    (PUT "/something" {params :params} 
     (println (str "Params: " params)) 
     (do-put-something params))) 

(def myapp 
    (-> public-routes 
     ring-params/wrap-params)) 

(defn start-server [] 
    (future (jetty/run-jetty (var myapp) {:port 8080}))) 

wrap-params, wrap-keyword-params 및 wrap-multipart-params를 추가했지만 httpie (또는 클라이언트)을 사용하여 끝점으로 보내면 params는 항상 비어 있습니다. 누구든지 도와 줄 수 있습니까?

감사합니다.

+2

이 문제가 compojure 경로 - 정의 또는 랩 PARAMS에 의해 압축을하지 PARAMS에 있는지 여부를 확인하려면, 나는 일시적으로하는 것이 좋습니다 수 있습니다 '(defn public-routes [req] (println req))'그러면 전체 링 요청 맵을 볼 수 있습니까? –

답변

1

예제 코드의 유일한 문제점은 라우트 본문에 링 응답 해시 맵이 없다는 것입니다. 해결책은 println을 사용하는 대신 링 응답으로 평가됩니다. 귀하의 경로에서 println을 호출하면 서버 프로세스가 실행되고있는 표준 출력으로 인쇄됩니다.이 프로세스는 API 호출에 대한 응답과 아무 관련이 없습니다.

(defroutes public-routes 
    (PUT "/something" {params :params} 
    {:status 200 
    :body (str "Params: " params)})) 

이렇게하면 Params: {"foo" "bar"}의 응답이 응답 본문으로 생성됩니다. 나는 당신의 PUT 경로를 테스트하려면이 사용하고

:

curl -X PUT -d "foo=bar" http://127.0.0.1:8080/something 
+0

나는 아직도 잘못하고 있을지 모르지만, 나는 전자가 컴파일 시간 오류를 주며, 후자는 같은 빈 params 콜렉션을 생성한다. – jamiei

+0

최소한의 전체 프로젝트를 요점 또는 git repo로 게시 할 수 있습니까? – rplevy

+0

https://gist.github.com/1f74b817ca5d306af9f3 – jamiei

관련 문제