Configurez le paramètre codes pour définir les codes de réponse API que le SDK considère comme des succès. Cela permet d'éviter la levée d'exceptions pour les réponses non-200 attendues.
Par défaut, le SDK V1.0 pour Node.js lève une exception dès qu'un appel API renvoie un code de réponse autre que 200, OK, Success ou success. Utilisez le paramètre codes dans la configuration de votre client pour étendre cet ensemble de succès. Tout code ajouté à codes est traité comme un succès ; le SDK ne lève alors aucune exception pour cette réponse.
Fonctionnement
Une fois l'opération API terminée, le SDK compare le champ Code de la réponse à l'ensemble de succès configuré :
Aucune exception levée : Le
Codede la réponse correspond à200,OK,Success,successou à toute valeur spécifiée danscodes.Exception levée : Le
Codede la réponse correspond à toute autre valeur.
Utilisez codes lorsqu'un code de réponse spécifique constitue un résultat attendu de votre logique métier. Par exemple, vous pouvez ainsi gérer directement dans le code de votre application une réponse indiquant qu'un endpoint n'est pas pris en charge, au lieu de la traiter comme une exception du SDK.
Configurer le paramètre codes
Transmettez un tableau de codes de réponse à l'option codes lors de la création de votre instance RPCClient. L'exemple suivant ajoute InvalidOperation.NotSupportedEndpoint à l'ensemble des succès afin que le SDK ne lève pas d'exception lorsque ECS renvoie ce code.
const RPCClient = require('@alicloud/pop-core').RPCClient;
const client = new RPCClient({
// Obtain the AccessKey ID of the Resource Access Management (RAM) user from environment variables.
accessKeyId: process.env.ALIBABA_CLOUD_ACCESS_KEY_ID,
// Obtain the AccessKey secret of the RAM user from environment variables.
accessKeySecret: process.env.ALIBABA_CLOUD_ACCESS_KEY_SECRET,
endpoint: 'https://ecs.cn-beijing.aliyuncs.com',
apiVersion: '2014-05-26',
// Throw an exception if the response code is not 200, OK, Success, success, or a value of the codes parameter.
// The value of the codes parameter in this example is for reference only. Specify this parameter based on your business requirements.
codes: ['InvalidOperation.NotSupportedEndpoint'],
});
const params = {
RegionId: 'cn-beijing',
};
const action = 'DescribeInstances';
client.request(action, params).then((result) => {
console.log(JSON.stringify(result));
});
Avec cette configuration, un appel DescribeInstances qui renvoie InvalidOperation.NotSupportedEndpoint résout la Promise normalement : votre gestionnaire .then() reçoit le résultat. Tout autre code inattendu continue de lever une exception ; seuls les codes explicitement listés sont donc ignorés.