将参数传递给 Flask API 方法

卡布劳

我对 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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章