0

tasty-pieを使用してRESTfulAPIを提供するDjangoアプリがあります。

テストにはDjangoの開発runserverを使用しています。

ブラウザ経由でアクセスすると正常に動作し、Curlの使用も正常に動作します。

curl "http://localhost:8000/api/v1/host/?name__regex=&format=json"

runserverを備えたコンソールでは、次のように表示されます。

[02/Oct/2012 17:24:20] "GET /api/v1/host/?name__regex=&format=json HTTP/1.1" 200 2845

ただし、Pythonリクエストモジュール(http://docs.python-requests.org/en/latest/)を使用しようとすると、出力として404が返されます。

>>> r = requests.get('http://localhost:8000/api/v1/host/?name__regex=&format=json')
>>> r
<Response [404]>

また:

>>> r = requests.get('http://localhost:8000/api/v1/host/?name__regex=&amp;format=json')
>>> r
<Response [404]>

また、Django runserverコンソールでは、次のように表示されます。

[02/Oct/2012 17:25:01] "GET http://localhost:8000/api/v1/host/?name__regex=&format=json HTTP/1.1" 404 161072

何らかの理由で、リクエストを使用すると、localhostを含むリクエストURL全体が出力されますが、ブラウザやcurlを使用すると出力されません。

これは、送信するエンコーディング、ユーザーエージェント、またはリクエストタイプと関係があると思いますか?

4

1 に答える 1

0

私はリクエストにあまり精通していませんが、あなたのエンコーディングのアイデアは正しいかもしれないと思います。つまり、リクエストはURLを何らかの方法で処理する可能性がありますか?おそらく、URL内のすべてを直接渡す代わりに、Requestsドキュメントが提案することを実行してみてください。

request_params = { 'name_regex' : '', 'format' : 'json' }
r = requests.get( 'http://localhost:8000/api/v1/host/', params = request_params )
于 2012-10-03T09:16:06.760 に答える