响应转换器异常

Response transformer exceptions

对于我正在使用的服务,大部分响应都在 XML 中,但也有一些是纯文本。设置它的最佳方法是什么?

目前我有这个:

// Root should return plain text, don't try to transform it
configureTransformer("/") { (content: String, entity) -> String? in
  return content
}
// Most data is XML
configureTransformer("**") { (content: NSData, entity) -> NSXMLDocument? in
  return try? NSXMLDocument(data: content, options: 0)
}
configureTransformer("**/properties/*") {
  (content: NSData, entity) -> String? in
  return String(data: content, encoding: NSUTF8StringEncoding)
}

..但是当我查询根 URL 时,它将是纯文本,我收到一个错误,因为无法应用 NSData -> NSXML 文档转换器。

编辑: 也许我真正想要的是在内容类型为 application/xml 时应用 XML 转换器。有办法吗?

根据我在 Service.init() 中看到的情况,我这样做了,而且效果很好:

func XMLResponseTransformer(
    transformErrors: Bool = true) -> Siesta.ResponseTransformer
{
  return Siesta.ResponseContentTransformer(transformErrors: transformErrors) {
    (content: NSData, entity: Siesta.Entity) throws -> NSXMLDocument in
    return try NSXMLDocument(data: content, options: 0)
  }
}

configure(description: "xml") {
  [=10=].config.pipeline[.parsing].add(XMLResponseTransformer(),
                                   contentTypes: [ "*/xml" ])
}