ASP0007:路由參數和引數選擇性不符
值 | |
---|---|
規則識別碼 | ASP0007 |
類別 | 使用方式 |
修正程式是中斷或非中斷 | 不中斷 |
原因
路由參數在委派定義中宣告為必要,但在端點路由中標示為選用。
檔案描述
宣告端點時,可以在路由範本和路由處理常式引數中宣告參數的選擇性。 當參數在處理常式中宣告為選用時,也必須在路由範本中宣告為選用。 例如,GET /todos
無法解析下列程式碼的相符項目:
app.MapGet("/todos/{id}", (int? id) => {});
上述程式碼無法比對 GET /todos
,因為未提供 id
參數,即使它在路由處理常式中被視為選用亦然。
如何修正違規
若要修正此規則的違規,請確定路由範本和委派中的選擇性相符。 例如,針對下列程式碼範例:
app.MapGet("/todos/{id}", (int? id) => {});
如果參數預期是必要,請從 int?
移除 ?
,使型別不可為 Null:
app.MapGet("/todos/{id}", (int id) => {});
如果參數預期是選用,則應該套用可為 Null 的實值型別運算子 ?
:
app.MapGet("/todos/{id?}", (int? id) => {});
隱藏警告的時機
請勿隱藏此規則的警告。 不相符的參數選擇性會在執行階段的路由導致非預期的行為。