我是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
)
我的另一个问题是,可能是像Heroku这样的API主机和请求吗?
答案 0 :(得分:2)
您可以通过使用
<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