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 configuration
的 pipeline
部分在相关请求之前,它显示了可能适用于响应的所有转换器,并且
Applied transformer
和 Response after pipeline
查看实际服务器响应是如何转换的。
我在 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 configuration
的pipeline
部分在相关请求之前,它显示了可能适用于响应的所有转换器,并且Applied transformer
和Response after pipeline
查看实际服务器响应是如何转换的。