ASP0007: Niezgodność parametrów trasy i argumentów jest niezgodna
Wartość | |
---|---|
Identyfikator reguły | ASP0007 |
Kategoria | Użycie |
Poprawka powodująca niezgodność lub niezgodność | Niezgodność |
Przyczyna
Parametr trasy jest zadeklarowany zgodnie z wymaganiami w definicji delegata, ale jest oznaczony jako opcjonalny w trasie punktu końcowego.
Opis reguły
Po zadeklarowaniu punktu końcowego można zadeklarować opcjonalne parametry zarówno w szablonie trasy, jak i w argumentach procedury obsługi tras. Jeśli parametr jest zadeklarowany jako opcjonalny w procedurze obsługi, należy go również zadeklarować jako opcjonalny w szablonie trasy. Na przykład polecenie GET /todos
nie może rozpoznać dopasowania dla następującego kodu:
app.MapGet("/todos/{id}", (int? id) => {});
Powyższy kod nie pasuje do metody GET /todos
, ponieważ nie podano parametru id
, mimo że jest on traktowany jako opcjonalny w procedurze obsługi tras.
Jak naprawić naruszenia
Aby naprawić naruszenie tej reguły, upewnij się, że opcjonalność szablonu trasy i dopasowanie delegata. Na przykład dla następującego przykładu kodu:
app.MapGet("/todos/{id}", (int? id) => {});
Jeśli parametr ma być wymagany, ustaw typ bez wartości null, usuwając parametr ?
z int?
:
app.MapGet("/todos/{id}", (int id) => {});
Jeśli parametr ma być opcjonalny, należy zastosować operator ?
typu wartości null:
app.MapGet("/todos/{id?}", (int? id) => {});
Kiedy pomijać ostrzeżenia
Nie pomijaj ostrzeżenia z tej reguły. Niezgodność parametrów opcjonalnych może spowodować nieoczekiwane zachowanie routingu w czasie wykonywania.