Saya membahas masalah ini dengan cara ini.
Saya menggunakan pesan pos ke api untuk mengirim daftar bilangan bulat sebagai data.
Lalu saya mengembalikan data sebagai ienumerable.
Kode pengiriman adalah sebagai berikut:
public override IEnumerable<Contact> Fill(IEnumerable<int> ids)
{
IEnumerable<Contact> result = null;
if (ids!=null&&ids.Count()>0)
{
try
{
using (var client = new HttpClient())
{
client.BaseAddress = new Uri("http://localhost:49520/");
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
String _endPoint = "api/" + typeof(Contact).Name + "/ListArray";
HttpResponseMessage response = client.PostAsJsonAsync<IEnumerable<int>>(_endPoint, ids).Result;
response.EnsureSuccessStatusCode();
if (response.IsSuccessStatusCode)
{
result = JsonConvert.DeserializeObject<IEnumerable<Contact>>(response.Content.ReadAsStringAsync().Result);
}
}
}
catch (Exception)
{
}
}
return result;
}
Kode penerima adalah sebagai berikut:
// POST api/<controller>
[HttpPost]
[ActionName("ListArray")]
public IEnumerable<Contact> Post([FromBody]IEnumerable<int> ids)
{
IEnumerable<Contact> result = null;
if (ids != null && ids.Count() > 0)
{
return contactRepository.Fill(ids);
}
return result;
}
Ini berfungsi dengan baik untuk satu catatan atau banyak catatan. Isi adalah metode kelebihan beban menggunakan DapperExtensions:
public override IEnumerable<Contact> Fill(IEnumerable<int> ids)
{
IEnumerable<Contact> result = null;
if (ids != null && ids.Count() > 0)
{
using (IDbConnection dbConnection = ConnectionProvider.OpenConnection())
{
dbConnection.Open();
var predicate = Predicates.Field<Contact>(f => f.id, Operator.Eq, ids);
result = dbConnection.GetList<Contact>(predicate);
dbConnection.Close();
}
}
return result;
}
Ini memungkinkan Anda untuk mengambil data dari tabel komposit (daftar id), dan kemudian mengembalikan catatan yang benar-benar Anda minati dari tabel target.
Anda bisa melakukan hal yang sama dengan sebuah tampilan, tetapi ini memberi Anda sedikit lebih banyak kontrol dan fleksibilitas.
Selain itu, detail apa yang Anda cari dari database tidak ditampilkan dalam string kueri. Anda juga tidak perlu mengonversi dari file csv.
Anda harus ingat ketika menggunakan alat apa pun seperti antarmuka web api 2.x adalah bahwa fungsi get, put, post, delete, head, dll. Memiliki penggunaan umum, tetapi tidak terbatas pada penggunaan itu.
Jadi, sementara posting umumnya digunakan dalam konteks buat di antarmuka api web, itu tidak terbatas pada penggunaan itu. Ini adalah panggilan html biasa yang dapat digunakan untuk tujuan apa pun yang diizinkan oleh praktik html.
Selain itu, perincian tentang apa yang sedang terjadi tersembunyi dari "mata yang mengintip" yang kita dengar banyak tentang hari-hari ini.
Fleksibilitas dalam penamaan konvensi di web api 2.x antarmuka dan penggunaan panggilan web biasa berarti Anda mengirim panggilan ke web api yang menyesatkan pengintai untuk berpikir Anda benar-benar melakukan sesuatu yang lain. Anda dapat menggunakan "POST" untuk benar-benar mengambil data, misalnya.