Вопрос

У меня есть приложение Django, которое обслуживает RESTful API с использованием вкусного пирога.

Я использую разработку Django runserver тестировать.

Когда я получаю к нему доступ через браузер, он работает нормально, и использование Curl также работает нормально:

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

На консоли с сервером запуска вижу:

[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 я вижу:

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

По какой-то причине, когда я использую запросы, он распечатывает весь URL-адрес запроса, включая localhost, но не когда я использую браузер или завиваюсь.

Я предполагаю, что это как-то связано с кодировкой, пользовательским агентом или типом отправляемого запроса?

Это было полезно?

Решение

Я не очень знаком с запросами, но думаю, что ваша идея кодирования может быть верной.То есть запросы могут как-то обрабатывать URL-адрес?Возможно, вместо того, чтобы передавать все в URL напрямую, попробуйте сделать то, что Запрашивает документы предлагать:

request_params = { 'name_regex' : '', 'format' : 'json' }
r = requests.get( 'http://localhost:8000/api/v1/host/', params = request_params )
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top