私はHTTP POSTエンドポイントをテストするためにpythonのTornadoフレームワークを使用しています。これを行うには、fetchメソッドを使用しています。POSTの整数をTornadoのAsyncHTTPTestCase.fetch()に送る方法は?
data = urllib.urlencode({
'integer_arg': 1,
'string_arg': 'hello'
})
resp = AsyncHTTPTestCase.fetch('/endpoint',
method='POST',
headers={'h1': 'H1',
'h2': 'H2',
'Content-Type': 'application/json'},
body=data)
私はこれを行うと、エンドポイントは、私はそれは整数としてそれを受信したいにもかかわらず、文字列"1"
としてinteger_arg
を受け取ります。 urllib.urlencode
が文字列に変換されるので、これは理解できます。 どうすれば整数を確実に受け取ることができますか? urllib.urlencode
への呼び出しを削除しても機能しません。
ちなみに、以下に示すようにnaked curlコールで同じエンドポイントにヒットした場合、エンドポイントは1
という整数としてinteger_arg
を正しく受信します。 curl
に
curl \
--request POST \
--header "h1: H1" \
--header "h2: H2" \
--header "Content-Type: application/json" \
--data '{
"integer_arg": 1,
"string_arg": "hello"
}' \
"http://localhost:8000/endpoint"