J'ai besoin de définir un délai d'attente au niveau de l'API, j'ai utilisé ceci

<forward-request timeout="3">

J'ai ajouté wait() dans le micro-service pour tester ce changement, et cela fonctionne comme prévu.

Le problème est dans l'erreur renvoyée, c'est tellement générique

{
    "statusCode": 500,
    "message": "Internal server error",
    "activityId": "xxxxxxxx"
}

Comment le rendre plus précis (erreur de délai d'attente) ?

Mise à jour 1 : j'ai trouvé une solution à ce problème en ajoutant ceci

<on-error>
    <set-body>
        @(
            new JObject(
                new JProperty("MsgRsHdr",new JObject(new JProperty("status", "ERROR"))),
                new JProperty("content",new JObject(
                    new JProperty("errors",
                        new JArray(
                            new JObject(
                                new JProperty("code", context.Response.StatusCode.ToString()),
                                new JProperty("message", context.LastError.Message),
                                new JProperty("Reason", context.LastError.Reason),
                                new JProperty("Source", context.LastError.Source),
                                new JProperty("Scope", context.LastError.Scope),
                                new JProperty("Section", context.LastError.Section),
                                new JProperty("Path", context.LastError.Path),
                                new JProperty("PolicyId", context.LastError.PolicyId),
                                new JProperty("type", "Error")
                            )
                        )
                    ),
                    new JProperty("timestamp",DateTime.UtcNow)
                    )
                )
            ).ToString()
        )
    </set-body>
</on-error>

Pour moi, cela semble être une solution de contournement, et non le moyen prévu pour renvoyer une réponse plus significative.

0
omar 3 févr. 2020 à 14:42

1 réponse

Meilleure réponse

L'idée derrière le comportement par défaut est que vous contrôlez la quantité de détails que vous souhaitez exposer aux clients appelant votre API. Les clients ne sont pas toujours sous votre contrôle. Examinez set-body avec un modèle pour faciliter la lecture des réponses d'erreur dans la stratégie.

1
Vitaliy Kurokhtin 4 févr. 2020 à 04:55