Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Valor | |
---|---|
ID da regra | ASP0007 |
Categoria | Utilização |
A correção é invasiva ou não invasiva | Inquebrável |
Motivo
Um parâmetro de rota é declarado como necessário na definição de delegado, mas é marcado como opcional na rota de ponto final.
Descrição da regra
Quando um ponto de extremidade é declarado, a opcionalidade dos parâmetros pode ser declarada no modelo de rota e nos argumentos do manipulador de rota. Quando um parâmetro é declarado como opcional no manipulador, ele também deve ser declarado como opcional no modelo de rota. Por exemplo, GET /todos
não consegue resolver uma correspondência para o seguinte código:
app.MapGet("/todos/{id}", (int? id) => {});
O código anterior não corresponde a GET /todos
porque o id
parâmetro não foi fornecido, embora seja tratado como opcional no manipulador de rota.
Como corrigir violações
Para corrigir uma violação desta regra, certifique-se de que a opcionalidade no modelo de rota e o delegado correspondam. Por exemplo, para o seguinte exemplo de código:
app.MapGet("/todos/{id}", (int? id) => {});
Se o parâmetro se destinar a ser exigido, torne o tipo não anulável removendo o ?
de int?
:
app.MapGet("/todos/{id}", (int id) => {});
Se o parâmetro se destina a ser opcional, então o operador ?
de tipo de valor anulável deve ser aplicado:
app.MapGet("/todos/{id?}", (int? id) => {});
Quando suprimir avisos
Não suprima um aviso desta regra. A opcionalidade de parâmetros incompatíveis pode resultar em um comportamento inesperado com o roteamento em tempo de execução.