Je travaille avec une API vraiment étrange (et méchante) sur laquelle je n'ai aucun contrôle, et malheureusement lorsqu'une requête invalide est faite, au lieu de répondre avec un statut 4xx, elle répond avec un 200 statut à la place.Marquer la réponse de siesta réussie comme erreur
Avec cette réponse, il modifie également le corps de la réponse de la réponse XML habituelle au texte brut, mais ne modifie pas l'en-tête du type de contenu. Vous pouvez imaginer à quel point c'est ennuyeux!
J'ai Siesta qui fonctionne avec l'API et le fait que ce n'est pas réellement RESTful dans le moindre, mais je ne sais pas comment faire fonctionner la prochaine partie - gérer les demandes infructueuses. Comment transformer une réponse 200 techniquement valide et réussie en une réponse d'erreur? En ce moment, j'ai la configuration suivante:
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)
}
Cela fonctionne très bien lorsque la réponse est en fait XML, mais dans le scénario où la réponse est une erreur, je reçois les éléments suivants:
bad api request: invalid api key
ou quelque chose de similaire à cela. La classe XMLParser gère déjà cela, et à son tour se signale comme ayant rencontré une erreur, mais je ne sais pas comment faire pour que Siesta se rende compte qu'il y a une erreur, et de ne pas appeler mon transformateur, mais marquer la requête comme ayant échoué Je peux gérer l'erreur ailleurs.
Comment puis-je obtenir ce que je suis après?
Merci! Je pense que j'ai réussi à le faire fonctionner: D – PaReeOhNos