Swift 午睡重定向响应失败
Swift Siesta redirect response to failure
是否可以使用 Siesta 管道,接收成功响应,解析它,并根据 return,将其重定向到失败响应?
我的服务器多次响应 return HTTP 200,但有错误 message/flag。
如果“重定向”是指“将 HTTP 成功转换为 Siesta 错误”,那么是的,这是可能的。管道可以任意将成功转化为错误,反之亦然。
写一个 ResponseTransformer
解包 .success
案例,检查是否设置了错误标志(无论它们是什么),如果是 returns 一个新构造的 .failure
.
例如,这是一个检查 200 上的 X-My-API-Error
header 的变压器草图,如果存在 returns 则错误:
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 {
[=11=].pipeline[.cleanup].add(APIErrorHandler())
}
您可能还会发现从 turn a 404 into a successful response with false
for the content, and the one that overrides Siesta’s default error message with a server-provided one.
的示例项目中研究转换器很有帮助
是否可以使用 Siesta 管道,接收成功响应,解析它,并根据 return,将其重定向到失败响应?
我的服务器多次响应 return HTTP 200,但有错误 message/flag。
如果“重定向”是指“将 HTTP 成功转换为 Siesta 错误”,那么是的,这是可能的。管道可以任意将成功转化为错误,反之亦然。
写一个 ResponseTransformer
解包 .success
案例,检查是否设置了错误标志(无论它们是什么),如果是 returns 一个新构造的 .failure
.
例如,这是一个检查 200 上的 X-My-API-Error
header 的变压器草图,如果存在 returns 则错误:
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 {
[=11=].pipeline[.cleanup].add(APIErrorHandler())
}
您可能还会发现从 turn a 404 into a successful response with false
for the content, and the one that overrides Siesta’s default error message with a server-provided one.