Swift 快速午睡重定向故障响应

Swift 快速午睡重定向故障响应,swift,pipeline,siesta-swift,Swift,Pipeline,Siesta Swift,是否可以使用Siesta管道,接收成功响应,对其进行解析,并根据返回将其重定向到失败响应 我的服务器响应多次返回HTTP 200,但带有错误消息/标志。如果“重定向”的意思是“将HTTP成功转换为午睡错误”,则是的,这是可能的。管道可以任意将成功转化为错误,反之亦然 编写一个ResponseTransformer,打开.success案例,检查是否设置了错误标志(无论它们是什么),如果设置了,则返回一个新构造的.failure 例如,下面是一个转换器的草图,它检查200上的X-My-API-Er

是否可以使用Siesta管道,接收成功响应,对其进行解析,并根据返回将其重定向到失败响应


我的服务器响应多次返回HTTP 200,但带有错误消息/标志。

如果“重定向”的意思是“将HTTP成功转换为午睡错误”,则是的,这是可能的。管道可以任意将成功转化为错误,反之亦然

编写一个
ResponseTransformer
,打开
.success
案例,检查是否设置了错误标志(无论它们是什么),如果设置了,则返回一个新构造的
.failure

例如,下面是一个转换器的草图,它检查200上的
X-My-API-Error
头,如果存在,则返回一个错误:

struct APIErrorHandler: ResponseTransformer {
  func process(_ response: Response) -> Response {
    switch response {
      case .success(let entity):
        if let errorMessage = entity.header(forKey: "X-My-API-Error") {
          return logTransformation(
            .failure(Error(userMessage: errorMessage, cause: MyAPIError(), entity: entity)))
        }
        return response

      case .failure:
        return response  // no change
    }
  }
}
配置如下:

service.configure {
  $0.pipeline[.cleanup].add(APIErrorHandler())
}

您还可能会发现,学习示例项目中的transformer非常有帮助。

太棒了!!谢谢你,保罗!