2013-11-25 9 views
2

저는 Clojure에서 구현 된 것으로 기존 PHP API를 대체하려고합니다.배열 스타일의 urlencoded 매개 변수를 고리로 받아들입니다.

http://localhost/create?person[name]=John&person[gender]=m 

PHP이를 얻을 것이다 :

array(
    "person" => array(
     "name" => "John", 
     "gender" => "m" 
    ) 
) 

우리는 현재 매개 변수를 처리하기 위해 링의 wrap-params를 사용하는 API는, 예를 들어, 배열 스타일의 매개 변수를 허용 엔드 포인트가 있습니다. 링의 입력 디코딩을 위해 source을 보면 링이 입력 매개 변수를 간단하게 디코딩하는 것을 볼 수 있습니다. &=으로 나누면됩니다.

{"person" {"name" "John" 
      "gender" "m"}} 

내가 제대로 배열 스타일의 매개 변수를 허용하는 내 링 응용 프로그램을 설정하는 방법 :

{"person[name]" "John" 
"person[gender]" "m"} 

이 Clojure의에서, 나는 다음과 같은 매개 변수를 원하는 것, 명시하려면 : 따라서 다음과 산출 PHP가 지원합니까? 내가 사용할 수있는 제 3 자 미들웨어가 있습니까?

+0

['ring.middleware.nested-params' (http://ring-clojure.github.io/ring/ring.middleware.nested-params.html#var-nested-params-request) 해결책 인 것 같다. 현재 문서를 구현하는 작업은 적절하지 않습니다. –

답변

0

이러한 중첩 된 매개 변수 배열을 지원해야하는 경우 해당 기능은 ring.middleware.nested-params 패키지에 제공됩니다. wrap-nested-params 미들웨어는 wrap-params과 함께 작동합니다. params는 요청 맵의 :params 키에 데이터를 입력하고 중첩 된 매개 변수는 완전히 확장 된 입력으로 바꿉니다.

(use '[ring.middleware.params :only (wrap-params)]) 
(use '[ring.middleware.nested-params :only (wrap-nested-params)]) 

(def app (wrap-params (wrap-nested-params your-handler)))