Swift Siesta 访问响应原始数据

Swift Siesta access response raw data

我在 API 中有一个 return PDF 文件内容的方法。

如何访问成功回调中响应的原始数据?

所有午睡响应都以原始数据开始(以基金会类型 Data 的形式),然后 运行 通过 transformer pipeline

默认转换器管道根据服务器发送的 Content-type header 解析 JSON、文本和图像。该列表不包括 PDF,因此如果您的服务器发送的内容类型为 application/pdf(或任何非 JSON、文本或图像内容类型),响应仍将是管道末端的原始 Data

request.onSuccess { entity in
  guard let data = entity.content as? Data else {
    print("Huh, got mystery response:", entity.content)
    return
  }
  // do stuff with data
}

如果你没有得到 Data——如果上面的代码说“嗯”——那么你的管道中的某些东西正在改变响应。您可以使用 Siesta 的详细日志记录来找出什么:

Siesta.LogCategory.enabled = LogCategory.detailed

在日志输出中查找:

  • Added config,当某些东西向管道添加变压器时记录,
  • Resulting configurationpipeline 部分在相关请求之前,它显示了可能适用于响应的所有转换器,并且
  • Applied transformerResponse after pipeline 查看实际服务器响应是如何转换的。