将参数传递给python中由flask创建的API

时间:2018-05-25 12:57:20

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

我是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)

我得到这个页面,上面写着我没有传递参数。

enter image description here

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

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

3 个答案:

答案 0 :(得分:2)

来自Flask documentation

  

您可以通过使用<variable_name>标记部分来向网址添加变量部分。然后,您的函数将<variable_name>作为关键字参数接收。 (可选)您可以使用转换器指定参数的类型,如<converter:variable_name>

所以在你的情况下会是:

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

其他选项是使用request data

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

您也可以像这样使用它,将名称作为参数传递!

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

另一个实现就是这样,通过python-flask文档!

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