Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
| Valeur | |
|---|---|
| Identificateur de la règle | ASP0007 |
| Catégorie | Usage |
| Le correctif est cassant ou non cassant | Non-breaking |
La cause
Un paramètre d’itinéraire est déclaré comme requis dans la définition de délégué, mais est marqué comme facultatif dans l’itinéraire du point de terminaison.
Description de la règle
Lorsqu’un point de terminaison est déclaré, l’option des paramètres peut être déclarée à la fois dans le modèle d’itinéraire et dans les arguments du gestionnaire d’itinéraires. Lorsqu’un paramètre est déclaré comme facultatif dans le gestionnaire, il doit également être déclaré comme facultatif dans le modèle d’itinéraire. Par exemple, GET /todos ne parvient pas à résoudre une correspondance pour le code suivant :
app.MapGet("/todos/{id}", (int? id) => {});
Le code précédent ne correspond pas à GET /todos , car le id paramètre n’a pas été fourni, même s’il est traité comme facultatif dans le gestionnaire d’itinéraires.
Comment corriger les violations
Pour corriger une violation de cette règle, assurez-vous que l’optionnalité dans le modèle d’itinéraire et le délégué correspondent. Par exemple, pour l’exemple de code suivant :
app.MapGet("/todos/{id}", (int? id) => {});
Si le paramètre est destiné à être requis, rendez le type non nullable en supprimant le ? de int?.
app.MapGet("/todos/{id}", (int id) => {});
Si le paramètre est destiné à être facultatif, l’opérateur ? doit être appliqué :
app.MapGet("/todos/{id?}", (int? id) => {});
Quand supprimer les avertissements
Ne supprimez pas un avertissement de cette règle. L'incompatibilité de l'optionalité des paramètres peut entraîner un comportement inattendu avec le routage au moment de l’exécution.