Bagikan melalui


ASP0007: Parameter rute dan opsionalitas argumen tidak cocok

Nilai
ID Aturan ASP0007
Kategori Penggunaan
Perbaikan bersifat disruptif atau non-disruptif Non-disruptif

Penyebab

Parameter rute dinyatakan sebagaimana diperlukan dalam definisi Delegasi tetapi ditandai sebagai opsional dalam rute titik akhir.

Deskripsi aturan

Ketika titik akhir dideklarasikan, opsionalitas parameter dapat dideklarasikan dalam templat rute dan dalam argumen handler rute. Ketika parameter dinyatakan sebagai opsional dalam handler, parameter juga harus dinyatakan sebagai opsional dalam templat rute. Misalnya, GET /todos gagal mengatasi kecocokan untuk kode berikut:

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

Kode sebelumnya gagal mencocokkan GET /todos karena id parameter tidak disediakan, meskipun diperlakukan sebagai opsional di handler rute.

Cara memperbaiki pelanggaran

Untuk memperbaiki pelanggaran aturan ini, pastikan bahwa opsionalitas dalam templat rute dan kecocokan delegasi. Misalnya, untuk sampel kode berikut:

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

Jika parameter dimaksudkan untuk diperlukan, buat jenis tidak dapat diubah ke null dengan menghapus ? dari int?:

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

Jika parameter dimaksudkan untuk bersifat opsional, maka operator ? jenis nilai yang dapat diubah ke null harus diterapkan:

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

Kapan harus menekan peringatan

Jangan menekan peringatan dari aturan ini. Opsionalitas parameter yang tidak cocok dapat mengakibatkan perilaku tak terduga dengan perutean pada waktu proses.