我正在使用Azure函数从Azure SQL数据库中获取数据,并尝试在三个条件下获取值。我需要输入三个参数来提取费率值,因此我需要使用三个参数使我的URL动态。
在我的init.py代码中,获取相应记录的路径为:
@app.route("/forwardrate/<valuationDate>/<forwardDate>/<tenor>", methods=['GET'])
def get_forward_rate(valuationDate, forwardDate, tenor):
try:
query = ''
valuationdate = valuationDate[:2]+'/'+valuationDate[2:4]+'/'+valuationDate[4:]
forwarddate = forwardDate[:2]+'/'+forwardDate[2:4]+'/'+forwardDate[4:]
query = "SELECT rate FROM database where [valuationDate] = \'{valuationdate}\' AND [forwardDate] = \'{forwarddate}\' AND [tenor] = {tenor}".format(valuationdate = valuationdate, forwarddate = forwarddate, tenor = tenor)
db = get_db()
cursor = db.execute(query)
row = cursor.fetchone()
#logger.info(query)
if row is None:
rate = 'No Rate Found!'
else:
rate = str(row[0])
return rate
except:
logger.error(error_handling())
return '!ERROR'
def main(req: func.HttpRequest, context: func.Context) -> func.HttpResponse:
logging.info('Python HTTP trigger function processed a request.')
return func.WsgiMiddleware(app).handle(req, context)
在我的function.json文件中,我将其设置为:
{
"scriptFile": "__init__.py",
"bindings": [
{
"authLevel": "anonymous",
"type": "httpTrigger",
"direction": "in",
"name": "req",
"methods": [
"get",
"post"
],
"route": "/forwardrate/{valuationdate}/{forwarddate}/{tenor}"
},
{
"type": "http",
"direction": "out",
"name": "$return"
}
]
}
当我在本地测试时,我可以通过直接在url中输入paras来成功获取数据:请访问:
在我部署到云之后,在我的函数下,我将得到url(在函数〉概述下):是吗?
或url(在函数〉代码+测试下)https://apitesting.azurewebsites.net/api/forwardrate/{valuationdate}/{forwarddate}/{tenor}
我仍然可以得到正确的值:https://apitesting.azurewebsites.net//forwardrate/06302020/06302020/3
但是有没有办法把这三个参数设置成像key-value对一样的“参数”来输入呢?就像我们在postman中要求的那样?我想把参数作为key value输入,而不是把它们作为url的一部分输入,这样我的url就更灵活了,但是现在它会像(用& =):https://apitesting.azurewebsites.net//forwardrate/?valuationdate=06302020&forwarddate=06302020&tenor=3 x1c 0d1x这将完全导致错误,完全不同于我的运行网址,并无法得到与此网址的结果。
有没有什么方法可以让参数作为key-value输入到我的Azure Functions with flask中?或者我如何在postman中输入paras,使其成为我的原始格式?
我是非常新的API的东西,也是新的Azure平台,我高度赞赏所有的建议,谢谢!
1条答案
按热度按时间edqdpe6u1#
看一下Flask
request.args
文档。任何URL参数都可以在(实质上)dict
中使用。然后,您需要将它们从URL路径中删除。