【问题标题】:Python Flask App: Handling external requests safelyPython Flask App:安全处理外部请求
【发布时间】:2021-07-03 01:14:53
【问题描述】:

这更像是一个我想解决的最佳实践问题。我正在开发一个 Flask 应用程序,该应用程序发出外部请求以获取令牌等。如果请求成功,我会得到一个包含密钥“令牌”的 JSON 文件,或者如果请求失败,我会得到一个错误的 JSON 文件。这是基本的骨架代码:

from flask import Flask
import requests

@route('/token')
def gettoken():
    token_response = requests.post(basic_send_url, data=data)

    return token_response['token']

我正在从另一个脚本调用此端点。如果请求失败,我会收到一个错误,因为错误 JSON 没有“令牌”键。我有多个类似的请求,我不希望我的应用程序由于这些请求失败而失败(假设它们发生,我希望用户重试或其他)。我的第一个问题是,对于上述代码是否有更好的 Pythonic 方式(比如使用try 或异常处理)。二、生产中针对上述情况的最佳实践是什么?

【问题讨论】:

    标签: python flask web-applications python-requests


    【解决方案1】:

    在找到不同的选项后,我决定使用以下选项:

    @route('/token') 
    def gettoken():     
        token_response = requests.post(basic_send_url, data=data)
        token_value = token_response.get('token')  # .get() does not raise an error if the key doesn't exist; it returns None
        if token_value:
            return token_value
        return 400, "Bad request"
    

    所以关键是使用get()函数。它很简单,允许我在我的主脚本中处理所有与“错误请求”类似的错误,并将用户重定向到为错误请求设计的单个页面。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-10
      • 2020-04-14
      • 2013-01-18
      • 1970-01-01
      • 2013-05-25
      • 2014-07-06
      相关资源
      最近更新 更多