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

为什么Alamofire的DELETE请求无法正常工作,POST、GET请求均正常

代码问题排查点
  • 参数编码不符合后端要求
    你当前DELETE请求使用JSONEncoding.default将poster参数放在请求体中,但绝大多数后端服务不会解析DELETE请求的请求体参数,而是要求参数放在URL查询串中。你可以将编码方式替换为URLEncoding.default即可解决参数无法被后端识别的问题。

  • DELETE请求响应为空导致解码失败
    多数RESTful接口的DELETE请求成功后会返回204 No Content,响应体为空,你此时尝试用JSONDecoder解码Post.self必然失败,你可以判断如果响应状态码是204,直接构造对应Post对象调用completion,或者根据实际接口返回调整解码逻辑。

  • 解码错误被静默吞噬,无法定位问题
    你两处请求都使用try?处理解码逻辑,一旦解码失败不会抛出任何错误日志,也无法感知失败场景:

    1. 检查getAllPosts方法中你定义的Posts类型是否符合返回结构,该方法的completion要求传入[Post]数组,你需要确保Posts是包含[Post]数组属性的Codable结构,否则会直接解码失败
    2. 建议把try?替换为do-catch结构,打印解码错误信息,示例如下:
do {
    let userResponse = try jsonDecoder.decode(Post.self, from: data)
    completion(userResponse)
} catch {
    print("解码失败: \(error)")
}
  • 回调未兜底,上层逻辑无响应
    你当前仅在解码成功时才调用completion回调,请求失败、解码失败场景都不会触发回调,上层业务会一直等待回调无法继续执行,建议在所有分支都增加回调处理,或者补充失败回调参数覆盖异常场景。

  • 路径拼接错误导致404
    打印endpoint变量检查拼接结果,确保host末尾带斜杠,否则拼接出来的路径会缺少斜杠(比如host为http://xxx.com时,拼接结果会是http://xxx.composts/1而非正确的http://xxx.com/posts/1),导致请求404。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 15:36:01