Я вирішив це питання таким чином.
Я використовував повідомлення api для надсилання списку цілих чисел як даних.
Потім я повернув дані як незліченну кількість.
Код відправки такий:
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;
}
Код отримання такий:
// 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;
}
Це добре працює для одного запису або багатьох записів. Заповнення - це перевантажений метод, використовуючи 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;
}
Це дозволяє отримати дані з складеної таблиці (список ідентифікаторів), а потім повернути записи, які вас справді цікавлять, з цільової таблиці.
Ви можете зробити те ж саме з видом, але це дає вам трохи більше контролю та гнучкості.
Крім того, деталі того, що ви шукаєте від бази даних, не відображаються в рядку запиту. Вам також не доведеться конвертувати з CSV-файлу.
Ви повинні мати на увазі, використовуючи будь-який інструмент, такий як веб-інтерфейс api 2.x, це те, що функції get, put, post, delete, head і т.д. функції мають загальне використання, але не обмежуються цим використанням.
Отже, хоча пост зазвичай використовується в контексті створення в інтерфейсі веб-api, він не обмежується цим використанням. Це звичайний html-дзвінок, який можна використовувати для будь-яких цілей, дозволених практикою html.
Крім того, подробиці того, що відбувається, приховані від тих «чужих очей», про які ми так багато чуємо в ці дні.
Гнучкість у призначенні імен у веб-інтерфейсі api 2.x та використання звичайних веб-дзвінків означає, що ви відправляєте дзвінок у веб-api, що вводить в оману снайперів, думаючи, що ви справді робите щось інше. Наприклад, ви можете використовувати "POST" для дійсного отримання даних.