我在我的 API 中有一个返回 PDF 文件内容的方法。
如何在成功回调中访问响应的原始数据?
所有 Siesta 响应都以原始数据(以 Foundation 类型的形式Data
)开始,然后通过转换器管道运行。
Content-type
默认的转换器管道根据服务器发送的标头解析 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
,当某物将变压器添加到管道时记录,pipeline
部分Resulting configuration
,它显示了可能适用于响应的所有转换器,以及Applied transformer
并Response after pipeline
查看实际的服务器响应是如何转换的。