我正在使用一個非常奇怪的(和令人討厭的)API,我無法控制,不幸的是,當發出無效請求時,而不是以4xx狀態響應,它響應200狀態。馬克成功的午睡反應,因爲錯誤
使用此響應,它也將響應正文從通常的XML響應更改爲純文本,但不會更改內容類型標題。你可以想象這有多惱人!
我已經得到了Siesta與API的合作,並且事實上它沒有絲毫的REST風格,但我不確定如何讓下一部分工作 - 處理不成功的請求。
我該如何着手將技術上有效且成功的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意識到存在錯誤,並且不會調用我的變換器,而是將請求標記爲失敗我可以在別處處理錯誤。
我該如何實現我所追求的目標?
謝謝!想想我已經設法使它工作:D – PaReeOhNos