无法在 add_url_rule 中设置方法

Can't set methods in add_url_rule

我正在尝试将我的 Flask 服务器包装在 class 中,以便更好地适应我的应用程序其余部分的结构。

我有以下代码:

class HTTPServer(object):
    def __init__(self):
        self.app = Flask(__name__)
        self.app.add_url_rule('/', 'index', self.hello_world, methods=['POST'])
        self.app.run(port=5050, use_reloader=False)

    def hello_world(self, data):
        print "Hello, World: {}".format(data)

但是,如果我向 localhost:5050/index 发送 POST 请求,我会收到 404 错误。

Flask 日志显示如下:

127.0.0.1 - - [30/Aug/2019 11:17:52] "POST /index HTTP/1.1" 404 -

如果我在 methods 中将 ['POST'] 更改为 ['GET'] 并发送 GET 请求,也会发生同样的情况。

但是,如果我从 add_url_rule() 中完全删除 methods 参数,我可以发送 GET 请求并且它们会得到适当的处理。

我没看懂add_url_ruleendpoint参数。它不是客户端看到的端点,而是端点的内部名称。正确的方法调用是:

self.app.add_url_rule('/index', 'hello_world', self.hello_world, methods=['POST'])