시에스타 파이프 라인을 사용하여 성공 응답을 받아 구문 분석하고 반환에 따라 실패 응답으로 리디렉션 할 수 있습니까?신속한 시에스타는 실패에 대한 응답을 리디렉션합니다
내 서버 응답이 여러 번 HTTP 200을 반환하지만 오류 메시지/플래그가 표시됩니다.
시에스타 파이프 라인을 사용하여 성공 응답을 받아 구문 분석하고 반환에 따라 실패 응답으로 리디렉션 할 수 있습니까?신속한 시에스타는 실패에 대한 응답을 리디렉션합니다
내 서버 응답이 여러 번 HTTP 200을 반환하지만 오류 메시지/플래그가 표시됩니다.
"리디렉션"은 "HTTP 성공을 낮잠 오류로 변환"한다는 의미입니다. 그렇다면 가능합니다. 파이프 라인은 성공을 오류로 또는 그 반대로 임의로 변환 할 수 있습니다.
.success
케이스를 풀어내는 ResponseTransformer
을 작성하고 오류 플래그가 설정되었는지 (그 값이 무엇이든) 확인한 다음 새로 작성한 .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())
}
예제 프로젝트의 변압기는 turn a 404 into a successful response with false
for the content이고 그 중 하나는 overrides Siesta’s default error message with a server-provided one입니다.
굉장 !! 폴 감사합니다! – user2921672