首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么我的Flask应用会返回状态代码308的响应?

为什么我的Flask应用会返回状态代码308的响应?
EN

Stack Overflow用户
提问于 2021-03-13 11:17:41
回答 2查看 698关注 0票数 3

我正在测试我的酒瓶应用程序。正在测试的代码如下:

代码语言:javascript
运行
复制
@app.route("/my_endpoint/", methods=["GET"])
def say_hello():
    """
    Greets the user.
    """
    name = request.args.get("name")
    return f"Hello {name}"

测试结果如下:

代码语言:javascript
运行
复制
class TestFlaskApp:
    def test_my_endpoint(self):
        """
        Tests that my endpoint returns the result as plain text.
        :return:
        """
        client = app.test_client()
        response = client.get("/my_endpoint?name=Peter")
        assert response.status_code == status.HTTP_200_OK
        assert response.data.decode() == "Hello Peter"

错误是:

预期:200实际:308

因此,我得到的不是"OK“(200),而是”永久重定向“(308)

EN

Stack Overflow用户

发布于 2021-04-28 11:19:50

Flask使用werkzeug.routing.Rule (启用strict_slashes作为缺省值),访问不带尾斜杠的分支URL将重定向到附加斜杠的strict_slashes。这会引起308 (永久重定向)的响应。

因此,您的请求路径必须与路由路径完全匹配。

如果您想支持这两条路由:

  • /my_endpoint
  • /my_endpoint/

只需使用app.route设置strict_slashes=False,如下所示:

代码语言:javascript
运行
复制
@app.route('/my_endpoint', methods = ['POST'], strict_slashes=False)
def view_func():
    pass
票数 2
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66612823

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档