使用Dio.delete请求时出现405错误,Swagger调用正常求助
Dio Delete请求出现405错误的解决方案
问题分析
Get/Post请求正常,但Delete请求在应用中返回405(方法不允许),Swagger调用正常,核心原因大概率是:
- 后端服务器不允许Delete请求携带请求体,而你的Dio请求通过
data参数传递了请求体,同时全局配置了Content-Type: application/json,触发了后端的方法校验。 - Swagger调用Delete时通常不会携带请求体(或采用了后端允许的参数传递方式),所以能正常响应。
可行解决方案
方案1:将参数改为URL查询参数传递
把原本放在请求体的参数放到URL的查询参数中,符合大多数后端对Delete请求的参数接收规范:
dio.delete(path, queryParameters: data);
方案2:移除Delete请求的Content-Type头部
覆盖全局的Content-Type配置,避免后端因为Delete请求带了JSON类型的请求体而返回405:
dio.delete(path, data: json.encode(data), options: Options(headers: {'Content-Type': null}) );
方案3:确认后端配置
如果上述方案无效,需要确认后端是否允许Delete请求携带请求体,是否需要调整后端的路由或跨域配置(比如CORS中是否允许Delete方法携带Content-Type)。
内容的提问来源于stack exchange,提问作者Mohammad Alamoudi
相关产品推荐
相关产品推荐

