【发布时间】:2021-06-23 10:04:42
【问题描述】:
我有一个非常简单的 API。你给它一个名字、电子邮件、地址、年龄,它就会返回:
{
'your name is':name,
'your email is': email,
'your address is': address,
'your age is': age
}
但是我试图将这些参数设为可选。
所以我可以使用 http://127.0.0.1:5000/overflow_test/name=John 调用 API,即仅使用名称。或者我可以只使用姓名和电子邮件http://127.0.0.1:5000/overflow_test/name=John&email='email@gmail.com
我相信我的问题在于下面的api.add_resource 部分:
from flask import Flask
from flask_restful import Resource, Api
import requests
app = Flask(__name__)
api = Api(app)
class hlr_lookup(Resource):
def get(self,name,email,address,age):
return {
'your name is':name,
'your email is': email,
'your address is': address,
'your age is': age
}
api.add_resource(hlr_lookup,'/overflow_test/<string:name><string:email><string:address><string:age>')
if __name__ == '__main__':
app.run(debug=True)
我尝试了add_resource 行的许多不同变体。
我在这里检查了相关问题,但所有的答案都像这样构造请求:'/overflow_test/parameter1/parameter2/parameter3/paramter4',即所有参数都用斜杠分隔/。
是否可以用 & 号分隔? & ?这是我比较习惯使用的 API 风格。
http://127.0.0.1:5000/overflow_test/name=John&email='email@gmail.com
如果我只使用名称John,则当前输出:
# api call
http://127.0.0.1:5000/overflow_test/name=John
# result
{
"your name is": "name=J",
"your email is": "o",
"your address is": "h",
"your age is": "n"
}
【问题讨论】:
标签: python flask flask-restful