You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter调用Strapi更新条目时遭遇405错误的解决问询

Strapi PUT请求返回405错误,已开启Public权限仍无法更新数据

尝试用PUT方法更新Strapi数据库条目时,返回405错误。已为Public角色勾选该内容类型的所有权限,且分别尝试了API Token和JWT Token认证,但依然无法修改数据。

测试更新代码如下:

Future getData() async {
    final response = await http.get(
      Uri.parse("http://localhost:1337/api/prove"),
    );

    setState(() {
      prova = Prova.fromJson(jsonDecode(response.body));
    });
  }

  Future updateData() async {
    if (controller.text.isEmpty) {
      print("no input");
      return;
    }
    final response = await http.put(
      Uri.parse("http://localhost:1337/api/prove"),
      headers: {
        "Authorization": 
            "bearer ${dotenv.env["token"]}"
      },
      body: jsonEncode(
        {
          "data": {
            "titolo": controller.text,
          }
        },
      ),
    );
    print(response.body);
    print(response.statusCode);
    getData();
  }

排查方向

  • 修正API端点格式:Strapi单条目更新需指定条目ID,正确端点应为http://localhost:1337/api/prove/:id。当前请求针对整个集合的PUT操作,Strapi默认不支持该方式(集合批量更新需用PATCH,且需额外配置权限)。
  • 核对权限配置:确认Public角色已开启该内容类型的*update(更新)*权限,且权限未设置额外条件限制,同时对应内容类型选择正确(需匹配prove)。
  • 完善请求参数:
    • 添加Content-Type: application/json请求头,Strapi要求明确标识JSON格式;
    • 验证Token有效性:API Token生成时需勾选update权限,JWT Token所属用户的角色需具备更新权限。
  • 检查路由规则:Strapi默认REST API不允许集合级PUT请求,若需批量更新,需自定义路由或启用集合PATCH权限。

内容的提问来源于stack exchange,提问作者Lapo121

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 09:57:42