gpt4 book ai didi

python - 如何制作一个简单的 Python REST 服务器和客户端?

转载 作者:行者123 更新时间:2023-12-04 13:38:16 24 4
gpt4 key购买 nike

我正在尝试制作最简单的 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 帖子:

Making a request to a RESTful API using python

作为准则,但不清楚如何根据消息更改调整格式。

可以简要说明如何设置参数传入 requests.get并建议进行必要的更改以使上面的客户端示例正常工作?谢谢!

- - 编辑 - -

我可以提到的另一件事是我让客户端很容易使用 Postman 工作,我只是不确定如何在 Python 中设置语法:

enter image description here

- - 编辑 - -

根据下面 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"
}
]
}

最佳答案

来自 help(requests.get) :

Help on function get in module requests.api:

get(url, params=None, **kwargs)
Sends a GET request.

:param url: URL for the new :class:`Request` object.
:param params: (optional) Dictionary or bytes to be sent in the query string for the :class:`Request`.
:param \*\*kwargs: Optional arguments that ``request`` takes.
:return: :class:`Response <Response>` object
:rtype: requests.Response

所以我会说 requests.get(url)就足以得到回应。那就看看要么 json()data() response 中的函数取决于 API 预期返回的内容。

所以对于 JSON 响应的情况,下面的代码应该足够了:
import requests
import json

url = "https://postman-echo.com/get?testprop=testval"
response = requests.get(url)
print(json.dumps(response.json(), indent=4))

使用实际的测试 API 尝试上面的代码。

关于python - 如何制作一个简单的 Python REST 服务器和客户端?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60537557/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com