Django restフレームワークを使用して、APIに投稿リクエストを送信しています。
curl --header "X-MyHeader: 123" --data "test=test" http://127.0.0.1:8000/api/update_log/
残りのフレームワークビューで、costumヘッダーを取得します。カスタムヘッダーが条件を満たす場合、投稿データの分析に進みます。
わかりました、私の意見は次のように見えます:
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要素でカスタムヘッダーを見つけようとしていますが、request.Metaを印刷すると500エラーが表示されます。 request.dataを印刷すると、予想される応答が返されます。
¿Django restフレームワークを使用して、投稿リクエストでカスタムヘッダーを取得する方法は何ですか?
リクエストのメタデータ属性の名前は大文字です:
print request.META
ヘッダーは次のように利用できます。
request.META['HTTP_X_MYHEADER']
または:
request.META.get('HTTP_X_MYHEADER') # return `None` if no such header
リクエストのHTTPヘッダーは、すべての文字を大文字に変換し、ハイフンをアンダースコアに置き換え、名前に
HTTP_
プレフィックスを追加することにより、META
キーに変換されます。そのため、たとえば、X-Bender
というヘッダーはMETA
キーHTTP_X_BENDER
にマップされます。
有効なヘッダー情報を提供し、その情報をバックエンドから取得する場合は、それらに従ってください
client-name='ABCKD'
その後、ポストでそのクライアント情報を取得するか、これに続いて関数を取得します
request.META['HTTP_CLIENT_NAME']
'ABCKD'を出力します。
リクエストのヘッダー情報で指定する有効な変数名が何であれ、Django大文字に変換し、ここで「HTTP_
」をプレフィックスとして使用し、クライアント名をCLIENT_NAME
に、プレフィックスをHTTP_
に変換する。最終出力はHTTP_CLIENT_NAMEです