【问题标题】:passing arguments to API created by flask in python将参数传递给由 python 中的烧瓶创建的 API
【发布时间】:2018-11-04 21:18:01
【问题描述】:

我是 API 和 python 的新手。实际上,在对在 R 中找到支持水管工的免费主机感到失望之后,我决定通过 python 尝试它。简单的问题是我有一个简单的函数,它接受两个数字参数,并使用给定的 CSV 文件进行一些计算并返回一个数字(我只是在 R 中由本地主机中的管道工完成)。现在在python中进行测试已经编写了以下代码:

from flask import Flask

app = Flask(__name__)

@app.route("/")
def hello():
    return "hello world!"

if __name__ == '__main__':
    app.run(debug=True)

好吧,这可以正常工作。但是当我尝试制作一个函数来接受这样的参数时:

from flask import Flask

app = Flask(__name__)

@app.route("/")
def hello(a):
    return a + 2

if __name__ == '__main__':
    app.run(debug=True)

我得到这个页面,上面说我没有通过参数。

我的主要问题是如何传递参数? (以 R 管道工创建的 API 为例,我称之为:localhost/5000/?a=2

我的另一个问题是,这种 API 主机和请求可能是 Heroku 之类的吗?

【问题讨论】:

  • 我可以给你一个答案,但从长远来看,阅读有关 Variable rules 的文档对你更好,也有利于你。

标签: python api flask flask-restful heroku-api


【解决方案1】:

你也可以这样用,把名字当参数传!

@app.route('/helloworld/<Name>')
def helloworld(Name):
    print Name

另一种实现方式就是这样,请阅读 python-flask 文档!

@app.route("/<int:a>")
def hello(a):
    return a + 2

【讨论】:

  • 非常感谢。是的,我应该看看文档。我做了你说的第二个解决方案,但我收到了The requested URL was not found on the server.
【解决方案2】:

来自Flask documentation

您可以通过使用&lt;variable_name&gt; 标记部分来将可变部分添加到 URL。然后,您的函数接收 &lt;variable_name&gt; 作为关键字参数。或者,您可以使用转换器来指定参数的类型,例如 &lt;converter:variable_name&gt;

所以你的情况是:

@app.route("/<int:a>")
def hello(a):
    return a + 2

其他选项是使用request data

【讨论】:

    【解决方案3】:

    你需要在装饰器@app.route中包含参数“a”:

    @app.route('/<int:a>')
    def hello(a):
       return a + 2
    

    【讨论】:

      猜你喜欢
      • 2017-02-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-22
      • 1970-01-01
      • 2023-03-09
      相关资源
      最近更新 更多