2015-02-05 4 views
9

내 API에 POST 요청을 보낸다 포스트의 요청에 따라 사용자 정의 헤더를 얻기 :장고 나머지 프레임 워크를 사용하여 만든 장고 나머지 프레임 워크

내 나머지 프레임 워크보기에서
curl --header "X-MyHeader: 123" --data "test=test" http://127.0.0.1:8000/api/update_log/ 

, 내 costum 헤더를 얻으려면, 맞춤 헤더가 조건을 충족하면 게시물 데이터를 분석 할 것입니다. 내가 request.Meta 요소에 내 사용자 정의 헤더를 찾기 위해 노력하고있어

class PostUpdateLogView(APIView): 
throttle_classes =() 
permission_classes =() 
parser_classes = (
    parsers.FormParser, 
    parsers.MultiPartParser, 
    parsers.JSONParser, 
) 

renderer_classes = (renderers.JSONRenderer,) 

def post(self, request): 
    print request.Meta 
    # Get custom header 
    # Validate custom header 
    # Proceed to analize post data 

    # Make response 
    content = { 
     'response': 'response', 
    } 

    return Response(content) 

,하지만 난 request.Meta를 인쇄 할 때, 나는 500 오류를 얻을 : 같은

좋아, 내보기 보인다. request.data를 인쇄하면 예상되는 응답을 얻습니다.

¿ django rest framework을 사용하여 게시물 요청에 사용자 정의 헤더를 가져 오는 방법은 무엇입니까?

답변

20

요청의 메타 데이터 속성의 이름은 대문자입니다 :

request.META['HTTP_X_MYHEADER'] 

또는 :

request.META.get('HTTP_X_MYHEADER') # return `None` if no such header 

Quote from the documentation

print request.META 

귀하의 헤더로 사용할 수 있습니다 :

모든 문자를 대문자로 변환하고 밑줄로 하이픈을 바꾸고 이름 앞에 HTTP_이라는 접두사를 추가하여 요청의 HTTP 헤더를 META 키로 변환합니다. 예를 들어, X-Bender이라는 헤더는 METAHTTP_X_BENDER에 매핑됩니다. 유효한 헤더 정보를 제공하고 백엔드에서 정보를 얻는 경우에

+0

누락 된 (;)처럼 죄송합니다.이 시간은 2 시간 ... 어쩌면 풍선을 사용하여 API를 요청할 때 버그 세부 정보를 볼 수 있습니다. curl을 사용하여 게시물 요청을 보내면 [05/Feb/2015 08:40:39] "POST/api/update_log/HTTP/1.1"500 78112와 같은 대답 만 내 콘솔에서 볼 수 있습니다. 버그 세부 사항을 참조하십시오. 고맙습니다. 내 부주의를 용서하십시오. –

+1

'curl '의 출력을 파일로 재지 정한 다음 브라우저에서이 파일을여십시오. 'curl ... http://127.0.0.1:8000/api/update_log/> error.html' – catavaran

0

다음 this-

request.META['HTTP_CLIENT_NAME'] 
다음 게시물에 해당 클라이언트 정보를 얻거나 기능을 얻을 수있는 다음 해당

client-name='ABCKD' 

에 따라

출력 결과는 'ABCKD'입니다.

는 요청에 헤더 정보를 제공하는 유효한 변수 이름, 장고 여기에서 ' HTTP_' 는 클라이언트 이름 HTTP_으로 CLIENT_NAME 접두사로 변환됩니다와는 대문자와 접두사 변환 어떤 것을 기억하십시오. 최종 출력은 HTTP_CLIENT_NAME입니다.

관련 문제