gpt4 book ai didi

ios - 将成功的午睡响应标记为错误

转载 作者:可可西里 更新时间:2023-11-01 02:00:25 29 4
gpt4 key购买 nike

我正在使用一个我无法控制的非常奇怪(和讨厌的)API,不幸的是,当发出无效请求时,它没有以 4xx 状态响应,而是以 200 状态响应。

对于此响应,它还将响应正文从通常的 XML 响应更改为纯文本,但不会更改内容类型 header 。你可以想象这有多烦人!

我已经让 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 意识到存在错误,而不是调用我的转换器,而是将请求标记为失败我可以在别处处理错误。

我怎样才能实现我所追求的目标?

最佳答案

configureTransformerjust a common-case shortcut对于功能齐全(但更冗长)的任意转换器,Siesta 的管道支持。完整的转换器可以任意地将任何响应转换为任何其他响应,包括成功→失败和失败→成功。 user guide discusses this有一点。

您可以在示例项目中看到这一点,它有一个客户转换器,它做的事情与您想要的非常相似,将 404 失败变成成功内容为 false。是configured heredefined here .该示例进行了失败→成功的转换,但您应该找到适用于您的成功→失败目的的代码。

关于ios - 将成功的午睡响应标记为错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46834818/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com