Sdílet prostřednictvím


ASP0007: Neshoda parametru trasy a volitelného argumentu

Hodnota
Identifikátor pravidla ASP0007
Kategorie Použití
Oprava je destruktivní nebo nedestruktivní Nezlomitelný

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 ?:

app.MapGet("/todos/{id?}", (int? id) => {});

Kdy potlačit upozornění

Ne potlačujte upozornění z tohoto pravidla. Neshoda volitelnosti parametrů může vést k neočekávanému chování směrování během běhu programu.