我对 Flask API 很陌生,所以我希望这很容易解决。
我正在开发一个 API(现在它只有一个端点,但是一旦我设法实现它的功能,就会有更多的功能出现)。我使用 swagger 编辑器生成了我的 API,并试图实现这些方法。我设法实现了一个不接受变量并返回一个 json 文件的 GET 方法。
我现在正在尝试的是将变量传递给这个方法来做一些事情。
我的目录结构是这样的:
swagger_server/
|---->__main__.py
|---->controllers
'---->default_controller.py
我的__main__.py
文件(我删除了一些空行以缩短这个问题):
1 #!/usr/bin/env python3
3 import connexion
5 from swagger_server import encoder
7
8 def main():
9 app = connexion.App(__name__, specification_dir='./swagger/')
10 app.app.json_encoder = encoder.JSONEncoder
11 app.add_api('swagger.yaml', arguments={'title': 'Test API'}, pythonic_params=True)
12 app.run(port=8080)
14
15 if __name__ == '__main__':
16 main()
我的default_controller.py
:
1 import connexion
2 import six
3 import os
4 import json
60
61 def get_supported_types(test): # noqa: E501
62 """Retrieve supported types for number test
63 param: test = id of supported type
64 :rtype: InlineResponse200
65 """
66 print(test)
70
71 return 'blabla'
没有参数,我就可以像这样用 curl 接收数据 curl -H 'Authorization: 0123' -H --trace-ascii /tmp/dump.txt 'http://127.0.0.1:3080/v1/supported_types'
我尝试添加一个额外的标头-H "test: 15"
,将其添加到 URL http://127.0.0.1:3080/v1/supported_types?test=15
(导致 500 服务器错误)和http://127.0.0.1:3080/v1/supported_types/?test=15
(导致 404 Not Found 错误)。
我还阅读了一些关于@app.route 的内容,我尝试过,但这并没有真正奏效:
@app.route("/v1/supported_types/", methods=['GET'])
NameError: name 'app' is not defined
谁能帮我把这个参数传递给方法?
将变量的名称放在您将使用的路由和方法上,然后您就可以处理了
@my_bp.route('/my_route/<int:id_report>')
def report(id_report=1):
report = make_pdf(Report.query.get(id_report))
return send_file(report, attachment_filename="My_Report.pdf", as_attachment=True )
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句