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
相关产品推荐
相关产品推荐

