2010-12-06 3 views
1

나는 mod_python 서버를 운영하고 있는데, index.py는 들어오는 요청을 처리하도록 설계되어있다.HTTP POST, curl 및 mod_python - HTML FORM 요소없이 POST 요청을 처리하는 방법?

index.py에서

, 내가 양식을 처리하고 형태로 세부 사항 얻기 위해이 같은 설계하는 경우 :

<form enctype="multipart/form-data" action="func" method="post"> 
<p>Input file:<input type="file" name="request"></p> 
<p><input type="submit" name="press" value="submit"></p> 

을 그리고 (이 같은 양식에서 세부 사항을 얻을 조치 "FUNC를"주의를 위)

def func(req): 
    message = [] 
    f = req.form.getfirst('request') 

브라우저에서 완벽하게 작동합니다. 파일을 업로드 할 수 있으며 그 내용은 서버 측에서 검색 할 수 있습니다.

그러나 컬의 POST를 통해 데이터를 보내려고합니다. 이 경우, 서버에서 < 양식 > 요소는 요청 객체 자체에서 POST 데이터를 얻을 수 있으면 POST를 처리 할 필요가 없다고 생각했습니다.

컬를 통해 내 요청을 가정은 다음과 같이이다 : 나는 게시하고 데이터를 얻을 수 있도록

curl --data "request=data_i_am_posting" http://mymodpythonsite.com/path/ 

어떻게

가 내 mod_python의 요청 핸들러가 설계되어야한다. < 양식 >을 사용해야합니까?

def index(req): 
    # What should I do here to get data_i_am_posting 

BTW, 내가 HTTP 서버가 습관에서 모든 클라이언트 (컬, 스크립트) 데이터를 게시하고 HTML이 아닌 될 응답을 기다리는 브라우저를 통해 액세스 할 수 있음을 유의하시기 바랍니다.

답변

4

먼저 몇 가지 참고 사항 : 당신이 Publisher Handler of mod_python을 사용하고 같은

  • 것 같습니다. 이것은 URL에서 파이썬 함수로 매핑하기 위해 많은 부분을 다루고 있습니다.
  • 서버가 실제로 데이터를 가져 오는 위치를 알지 못하거나 신경 쓰지 않습니다. 귀하의 경우에는 curl command is simply simulating a form POST request입니다.
  • 따라서 양식 요청과 똑같은 컬 요청을 처리 할 수 ​​있습니다.
  • "index.py"는 경로의 묵시적 부분이므로 게시자의 경로 -> 함수 매핑에 불필요한 혼동을 줄 수 있으므로 함수의 이름을 "index"로 지정하지 않는 것이 좋습니다. 잘못이 아니고, 혼란스럽지 않습니다.

그래서 당신의 컬 명령, 당신은 "index.py"모듈이 함수에서 당신이 원하는 것을 얻을 수있을 것입니다 :

def path(req): 
    request_data = req.form.getfirst('request') 

    -
+0

감사합니다. 그게 전부 였어. 색인 방법에서도이 작업을 수행 할 수 있습니다. 내가 인덱스 (req)에 대해 순전히 dir (req)을 수행했을 때, 나는 form 속성을 보지 못했습니다. mod_python req가 마술처럼 양식 속성을 얻는 방법을 잘 모르겠습니다. –

+0

내가 직면하고있는 또 다른 문제가 있습니다. 내가 curl --data를 할 때 "request = "http://mymodpythonsite.com/path/ 서버는 다음과 같이 유효하지 않은 XML로 본다 : value = something (tried --data , --data-binary, --data-urlencode, no avail) –

+0

아무 것도 나에게 즉시 뛰어 오르지 않습니다. 그것은 다른 질문에 대한 기회처럼 보이지만 :) – mjhm