我正在尝试在(共享)WSGI服务器上运行一个非常简单的flask-application。当我在内置服务器上运行该代码时,它可以正常工作,但是如果我尝试将POST
转到生产WSGI服务器上的URL,则会收到一个404, The requested URL was not found on the server
错误。
仅在POST
个请求中发生,GET
和PUT
被按预期处理。
通过删除占位符tid
,可以说服flask正确处理请求,但这显然不是适当的解决方案。
服务器正在运行Phusion Passenger,烧瓶版本为1.0.2。 由于它是共享服务器,因此我无法再访问服务器配置。
什么会使烧瓶似乎忘记WSGI服务器上的路由?
再现行为的最小示例(当然,仅在服务器上)如下所示:
from flask import Flask
from flask.views import MethodView
app = Flask(__name__)
class API(MethodView):
def get(self, tid=0):
return "Test"
def put(self, tid=0):
return "Test"
def post(self, tid=0):
return "Test"
app.add_url_rule("/test/<int:tid>", view_func=API.as_view('api'))
答案 0 :(得分:0)
您必须指定在add_url_rule
中使用的方法:
app.add_url_rule("/test/<int:tid>", view_func=API.as_view('api'), methods=['GET', 'PUT', 'POST'])