我正在使用一个我无法控制的非常奇怪(且令人讨厌)的 API,不幸的是,当发出无效请求时,它不是以 4xx 状态响应,而是以 200 状态响应。
通过此响应,它还将响应正文从通常的 XML 响应更改为纯文本,但不会更改内容类型标头。你可以想象这有多烦人!
我已经让 Siesta 使用 API,而且事实上它根本不是 RESTful,但我不确定如何让下一部分工作 - 处理不成功的请求。
如何将技术上有效且成功的 200 响应转换为错误响应?现在我有以下设置:
configure("/endpoint") {
$0.mutateRequests { req in
... perform some mutation to request ...
}
$0.pipeline[.parsing].add(self.XMLTransformer)
}
configureTransformer("/endpoint") {
($0.content as APIResponse)
.data()
.map(Resource.init)
}
当响应实际上是 XML 时,这工作得很好,但是在响应是错误的情况下,我收到以下内容:
bad api request: invalid api key
或类似的东西。XMLParser 类已经在处理这个问题,并反过来将自己标记为遇到错误,但是我不知道如何让 Siesta 意识到存在错误,并且不调用我的转换器而是将请求标记为失败我可以在其他地方处理错误。
我怎样才能实现我所追求的?