postman Azure函数与Python flask 想查询多个参数在 Postman

klr1opcd  于 2022-11-07  发布在  Postman
关注(0)|答案(1)|浏览(206)

我正在使用Azure函数从Azure SQL数据库中获取数据,并尝试在三个条件下获取值。我需要输入三个参数来提取费率值,因此我需要使用三个参数使我的URL动态。
在我的init.py代码中,获取相应记录的路径为:

  1. @app.route("/forwardrate/<valuationDate>/<forwardDate>/<tenor>", methods=['GET'])
  2. def get_forward_rate(valuationDate, forwardDate, tenor):
  3. try:
  4. query = ''
  5. valuationdate = valuationDate[:2]+'/'+valuationDate[2:4]+'/'+valuationDate[4:]
  6. forwarddate = forwardDate[:2]+'/'+forwardDate[2:4]+'/'+forwardDate[4:]
  7. query = "SELECT rate FROM database where [valuationDate] = \'{valuationdate}\' AND [forwardDate] = \'{forwarddate}\' AND [tenor] = {tenor}".format(valuationdate = valuationdate, forwarddate = forwarddate, tenor = tenor)
  8. db = get_db()
  9. cursor = db.execute(query)
  10. row = cursor.fetchone()
  11. #logger.info(query)
  12. if row is None:
  13. rate = 'No Rate Found!'
  14. else:
  15. rate = str(row[0])
  16. return rate
  17. except:
  18. logger.error(error_handling())
  19. return '!ERROR'
  20. def main(req: func.HttpRequest, context: func.Context) -> func.HttpResponse:
  21. logging.info('Python HTTP trigger function processed a request.')
  22. return func.WsgiMiddleware(app).handle(req, context)

在我的function.json文件中,我将其设置为:

  1. {
  2. "scriptFile": "__init__.py",
  3. "bindings": [
  4. {
  5. "authLevel": "anonymous",
  6. "type": "httpTrigger",
  7. "direction": "in",
  8. "name": "req",
  9. "methods": [
  10. "get",
  11. "post"
  12. ],
  13. "route": "/forwardrate/{valuationdate}/{forwarddate}/{tenor}"
  14. },
  15. {
  16. "type": "http",
  17. "direction": "out",
  18. "name": "$return"
  19. }
  20. ]
  21. }

当我在本地测试时,我可以通过直接在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平台,我高度赞赏所有的建议,谢谢!

edqdpe6u

edqdpe6u1#

看一下Flask request.args文档。任何URL参数都可以在(实质上)dict中使用。然后,您需要将它们从URL路径中删除。

  1. from flask import request
  2. @app.route("/forwardrate")
  3. def get_forward_rate():
  4. valuationdate = request.args.get('valuationdate', '')
  5. forwarddate = request.args.get('forwarddate', '')
  6. tenor = request.args.get('tenor', '')
  7. ...
  8. curl https://your.domain/forwardrate?valuationdate=1&forwarddate=2&tenor=3

相关问题