ASP0007: Neshoda parametru trasy a volitelného argumentu
Hodnota | |
---|---|
ID pravidla | ASP0007 |
Kategorie | Využití |
Oprava způsobující chybu nebo chybu způsobující chybu | Nenarušující |
Příčina
Parametr trasy je deklarován jako povinný v definici delegáta, ale v trase koncového bodu je označen jako volitelný.
Popis pravidla
Když je koncový bod deklarován, volitelně lze parametry deklarovat v šabloně trasy i v argumentech obslužné rutiny trasy. Pokud je parametr deklarován jako volitelný v obslužné rutině, musí být také deklarován jako volitelný v šabloně trasy. Funkce GET /todos
například nedokáže vyřešit shodu pro následující kód:
app.MapGet("/todos/{id}", (int? id) => {});
Předchozí kód neodpovídá příkazu GET /todos
, protože id
parametr nebyl zadán, i když je v obslužné rutině trasy považován za volitelný.
Jak opravit porušení
Chcete-li opravit porušení tohoto pravidla, ujistěte se, že volitelnost v šabloně trasy a delegát odpovídá. Například pro následující ukázku kódu:
app.MapGet("/todos/{id}", (int? id) => {});
Pokud má být parametr povinný, nastavte typ jako nenulový odebráním ?
z int?
:
app.MapGet("/todos/{id}", (int id) => {});
Pokud je parametr volitelný, měl by být použit operátor ?
typu hodnoty null:
app.MapGet("/todos/{id?}", (int? id) => {});
Kdy potlačit upozornění
Nepotlačujte upozornění z tohoto pravidla. Neshoda volitelného parametru může vést k neočekávanému chování směrování za běhu.