Di WebAPI, isi permintaan (HttpContent) hanya dapat dibaca sekali, tidak di-cache, dan hanya dapat dibaca ke depan.
Sebagai contoh:
1. Alamat permintaan: /?id=123&name=bob
Metode sisi server: void Action(int id, nama string) // Semua parameter adalah jenis sederhana, jadi semuanya akan berasal dari url
2. Alamat permintaan: /?id=123&name=bob
Metode sisi server: void Action([FromUri] int id, [FromUri] nama string) // Sama seperti di atas
void Action([FromBody] nama string); Atribut [FormBody] menampilkan bahwa seluruh isi dibaca sebagai string sebagai argumen
3. Alamat permintaan: /?id=123
Definisi Kelas:
kelas publik Pelanggan { // Jenis objek kompleks yang ditentukan string publik Nama { get; menetapkan; } publik int Usia { dapatkan; menetapkan; }
}
Metode sisi server: void Action(int id, Customer c) // Parameter id dibaca dari string kueri, parameter c adalah kelas objek Customer yang kompleks, dibaca dari body melalui pemformat
Metode sisi server: tindakan batal (Pelanggan c1, Pelanggan c2) // Kesalahan! Beberapa parameter adalah jenis yang kompleks dan semuanya mencoba membaca dari tubuh, yang hanya dapat dibaca sekali
Metode sisi server: tindakan batal([FromUri] Pelanggan c1, Pelanggan c2) // Ya! Berbeda dengan tindakan di atas, tipe kompleks C1 akan dibaca dari URL dan C2 akan dibaca dari isi
4. Metode ModelBinder:
void Action([ModelBinder(MyCustomBinder)] SomeType c) // Menunjukkan bahwa pengikat model tertentu digunakan untuk menyelesaikan parameter
[ModelBinder(MyCustomBinder)] kelas publik SomeType { } // Terapkan aturan ini ke semua parameter jenis SomeType dengan mendeklarasikan atribut [ModelBidner(MyCustomBinder)] ke jenis tertentu SomeType
void Action(SomeType c) // Karena jenis c adalah SomeType, karakteristik pada SomeType diterapkan untuk menentukan pengikatan modelnya
Ringkasan:
1. Parameter sederhana default diteruskan melalui parameter URL, dengan pengecualian:
1.1 Jika rute berisi parameter id, parameter id dilewatkan melalui rute;
1.2 Jika parameter ditandai sebagai [FromBody], parameter dapat berupa parameter sederhana, dan klien dapat meneruskannya melalui POST: $.ajax(url, '=value'), atau $.ajax({url: url, data: {'': 'value'}});
2. Parameter kompleks default (kelas entitas kustom) diteruskan melalui POST, dengan pengecualian:
2.1 Jika nilai parameter ditandai sebagai [FromUri], parameter dapat berupa parameter yang kompleks;
3. Parameter bertanda [FromBody] hanya diizinkan untuk muncul sekali, parameter yang ditandai sebagai [FromUri] dapat muncul beberapa kali, dan jika parameter yang ditandai sebagai [FromUri] adalah parameter sederhana, tag dapat dihapus. |