আমি এই বিষয়টিকে এইভাবে সম্বোধন করেছি।
আমি এপিআই-তে একটি পোস্ট বার্তা ব্যবহার করে ডেটা হিসাবে পূর্ণসংখ্যার তালিকা প্রেরণ করি।
তারপরে আমি ডেটাটি একটি অযৌক্তিক হিসাবে ফিরিয়ে দিয়েছি।
প্রেরণ কোডটি নিম্নরূপ:
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;
}
এটি একটি রেকর্ড বা অনেক রেকর্ডের জন্য ঠিক কাজ করে। ফিলটি ড্যাপার এক্সটেনশনগুলি ব্যবহার করে একটি ওভারলোডেড পদ্ধতি:
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;
}
এটি আপনাকে একটি যৌগিক টেবিল (আইডি তালিকা) থেকে ডেটা আনতে এবং তারপরে লক্ষ্য সারণী থেকে আপনার আগ্রহী রেকর্ডগুলি ফিরিয়ে আনতে সহায়তা করে।
আপনি একটি দর্শন দিয়ে একই করতে পারেন, তবে এটি আপনাকে আরও কিছুটা নিয়ন্ত্রণ এবং নমনীয়তা দেয়।
এছাড়াও, আপনি ডাটাবেস থেকে কী চাইছেন তার বিশদ কোয়েরি স্ট্রিংয়ে দেখানো হয়নি। আপনার কোনও সিএসভি ফাইল থেকে রূপান্তর করতে হবে না।
ওয়েব এপিআই ২.০ ইন্টারফেসের মতো কোনও সরঞ্জাম ব্যবহার করার সময় আপনাকে মনে রাখতে হবে যে গেট, পুট, পোস্ট, ডিলিট, হেড ইত্যাদি ফাংশনগুলির একটি সাধারণ ব্যবহার রয়েছে তবে এটি ব্যবহারের মধ্যে সীমাবদ্ধ নয়।
সুতরাং, পোস্টটি সাধারণত ওয়েব এপিআই ইন্টারফেসে তৈরি প্রসঙ্গে ব্যবহৃত হয়, তবে এটি সেই ব্যবহারের মধ্যেই সীমাবদ্ধ নয়। এটি একটি নিয়মিত এইচটিএমএল কল যা এইচটিএমএল অনুশীলনের দ্বারা অনুমোদিত যে কোনও উদ্দেশ্যে ব্যবহার করা যেতে পারে।
তদুপরি, কী চলছে সে সম্পর্কিত বিবরণগুলি এই "প্রাইভিং চোখ" থেকে লুকিয়ে রয়েছে যা আমরা এই দিনগুলি সম্পর্কে এতটা শুনি।
ওয়েব এপিআই ২.x ইন্টারফেসে নামকরণের কনফারেন্স এবং নিয়মিত ওয়েব কলিংয়ের ব্যবহারের অর্থ হল আপনি ওয়েব এপিটিতে একটি কল পাঠিয়েছেন যা স্নোপারদের ভেবে ভ্রান্ত করে যে আপনি সত্যিই অন্য কিছু করছেন। উদাহরণস্বরূপ, ডেটা সত্যিই উদ্ধার করতে আপনি "পোস্ট" ব্যবহার করতে পারেন।