【问题标题】:Python/Flask: Return Message and Status Code to calling function?Python/Flask:将消息和状态码返回给调用函数?
【发布时间】:2021-09-27 23:52:44
【问题描述】:

我有一个 Flask 应用程序(构建在 Flask Restx 资源类之上)并且我创建了几个 try/except 语句来验证我的应用程序的输入。

为了使应用程序的代码更具可读性,我想将这些检查封装在一个单独的函数中。但这引入了正确返回错误消息和状态码以便 API 处理的挑战。

有没有办法让函数通过调用函数返回?

# minimal example
from flask import Flask
from flask_restx import Api, Resource

app = Flask(__name__)
api = Api(app)

def validate_input(a):
    try:
        assert a < 10
    except:
        return "a >= 10", 500

@api.route("/<a>")
class BatchScorer(Resource):
    def get(self, a):

        # validate_input(a):

        # instead of?

        try:
            assert a < 10
        except:
            return "a >= 10", 500


if __name__ == "__main__":
    app.run(debug=True)

【问题讨论】:

    标签: python flask flask-restx


    【解决方案1】:

    给检查函数加一个返回值,简单的返回那个函数返回的值

    from flask import Flask, Response
    from flask_restx import Api, Resource
    
    app = Flask(__name__)
    api = Api(app)
    
    def validate_input(a):        
        if (a < 10):
            return Response(response="a < 10", status=200)
        else:
            return Response(response="a >= 10", status=500)
    
    @api.route("/<a>")
    class BatchScorer(Resource):
        def get(self, a):
            return validate_input(a)
    
    
    if __name__ == "__main__":
        app.run(debug=True)
    

    【讨论】:

    • 如果 a return validate_input(a) 将返回什么?那么validate_input(a) 不会返回任何东西,因此“外部”返回不会结束函数?
    • 显然需要处理,再加一个return Response (response = "a &lt;10", status = 200),如果你想这样处理,我只是复用了你的代码,不知道你具体需要做什么
    【解决方案2】:

    当您在函数中返回两件事时。所以你可以调用函数并返回它会返回。

    [...]
    return validate_input(a)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-19
      • 2014-11-22
      • 1970-01-01
      • 2014-06-18
      • 1970-01-01
      • 2019-02-11
      • 1970-01-01
      • 2017-05-09
      相关资源
      最近更新 更多