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.
ASP.NET Core
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk