আমি নিম্নলিখিত API- কলের POST পরিচালনা করতে চাই:
/v1/location/deviceid/appid
পোস্ট-বডি থেকে অতিরিক্ত প্যারামিটার আসছে।
এই সব আমার জন্য ভাল কাজ করে। এখন আমি "ডিভাইসিড" এবং / অথবা "অ্যাপিড" এবং / বা বডিডাটা শূন্য হতে দিয়ে আমার কোডটি প্রসারিত করতে চাই না:
/v1/location/deviceid
/v1/location/appid
/v1/location/
এই 3 টি ইউআরএল একই রুটের দ্বারা সাড়া দেওয়া উচিত।
আমার প্রথম পদ্ধতির (বডিডাটা প্রয়োজনীয়):
[Route("v1/location/{deviceid}/{appid}", Name = "AddNewLocation")]
public location_fromuser Post(string deviceid = null, string appid = null, [FromBody] location_fromuser BodyData)
{
return repository.AddNewLocation(deviceid, appid, BodyData);
}
এটি কাজ করে না এবং একটি সংকলন ত্রুটি প্রদান করে:
"alচ্ছিক প্যারামিটারগুলি অবশ্যই শেষে থাকা উচিত"
পরবর্তী চেষ্টা:
[Route("v1/location/{deviceid}/{appid}", Name = "AddNewLocation")]
public location_fromuser Post([FromBody] location_fromuser BodyData, string deviceid = null, string appid = null)
এখন আমার ফাংশন অ্যাডনিউওলোকেশন () সর্বদা একটি হয় BodyData=null
- এমনকি কলটি বডি পাঠায়।
অবশেষে আমি সমস্ত 3 টি প্যারামিটার optionচ্ছিক সেট করেছি:
[Route("v1/location/{deviceid}/{appid}", Name = "AddNewLocation")]
public location_fromuser Post(string deviceid = null, string appid = null, [FromBody location_fromuser BodyData = null)
কাজ না:
Ptionচ্ছিক পরামিতি
BodyData
দ্বারা সমর্থিত নয়FormatterParameterBinding
।
আমি কেন optionচ্ছিক পরামিতিগুলির সাথে সমাধান চাই? আমার কন্ট্রোলার একটি পোষ্টের মাধ্যমে কেবল "একটি নতুন অবস্থান যুক্ত করা" পরিচালনা করে।
আমি ভুল তথ্য আমার নিজের ব্যতিক্রম বা ত্রুটি বার্তা প্রেরণ করতে চাই। এমনকি যদি কলটির মূল্য নেই। এই ক্ষেত্রে আমি আমার কোড অনুসারে কোনও ব্যতিক্রম বা ডিফল্ট সেট করার সিদ্ধান্ত নিতে সক্ষম হতে চাই।
?
রুটের টেম্পলেটটির ভিতরে আমি যা খুঁজছিলাম। +1