Я пытаюсь сделать максимально простой сервер и клиент REST API, и сервер и клиент будут написаны на Python и запущены на одном компьютере.
Из этого руководства:
https://blog.miguelgrinberg.com/post/designing-a-restful-api-with-python-and-flask
Я использую это для сервера:
# server.py
from flask import Flask, jsonify
app = Flask(__name__)
tasks = [
{
'id': 1,
'title': u'Buy groceries',
'description': u'Milk, Cheese, Pizza, Fruit, Tylenol',
'done': False
},
{
'id': 2,
'title': u'Learn Python',
'description': u'Need to find a good Python tutorial on the web',
'done': False
}
]
@app.route('/todo/api/v1.0/tasks', methods=['GET'])
def get_tasks():
return jsonify({'tasks': tasks})
if __name__ == '__main__':
app.run(debug=True)
Если я запускаю это из командной строки:
curl -i http://localhost:5000/todo/api/v1.0/tasks
Я получаю это:
HTTP/1.0 200 OK
Content-Type: application/json
Content-Length: 317
Server: Werkzeug/0.16.0 Python/3.6.9
Date: Thu, 05 Mar 2020 02:45:59 GMT
{
"tasks": [
{
"description": "Milk, Cheese, Pizza, Fruit, Tylenol",
"done": false,
"id": 1,
"title": "Buy groceries"
},
{
"description": "Need to find a good Python tutorial on the web",
"done": false,
"id": 2,
"title": "Learn Python"
}
]
}
Отлично, теперь мой вопрос: как мне написать скрипт Python, использующий запросы для получения той же информации?
Я подозреваю это это правильная идея:
# client.py
import requests
url = 'http://todo/api/v1.0/tasks'
response = requests.get(url,
# what goes here ??
)
print('response = ' + str(response))
Однако, как вы можете видеть из моего комментария, я не уверен, как настроить параметры для requests.get
.
Я пытался использовать это Сообщение SO:
Выполнение запроса к API RESTful с использованием python
в качестве руководства, однако неясно, как настроить форматирование для изменения сообщения.
Может предоставить краткое описание того, как настроить параметры для передачи в requests.get
и предложить необходимые изменения для получения приведенный выше пример работает? Спасибо!
--- Edit ---
Еще кое-что, что я могу упомянуть, это то, что я довольно легко заставил клиента работать с Postman, я просто не уверен, как настроить синтаксис в Python:
--- Edit ---
На основании приведенного ниже ответа icedwater, это завершено, рабочий код для клиента:
# client.py
import requests
import json
url = 'http://localhost:5000/todo/api/v1.0/tasks'
response = requests.get(url)
print(str(response))
print('')
print(json.dumps(response.json(), indent=4))
результат:
<Response [200]>
{
"tasks": [
{
"description": "Milk, Cheese, Pizza, Fruit, Tylenol",
"done": false,
"id": 1,
"title": "Buy groceries"
},
{
"description": "Need to find a good Python tutorial on the web",
"done": false,
"id": 2,
"title": "Learn Python"
}
]
}