এএসপি.এনইটি এমভিসিতে, আমাদের @Url.Actionক্রিয়া রয়েছে। অনুরূপ কিছু আছে @Url.Apiযা / এপিআই / নিয়ামককে যাত্রা করবে?
এএসপি.এনইটি এমভিসিতে, আমাদের @Url.Actionক্রিয়া রয়েছে। অনুরূপ কিছু আছে @Url.Apiযা / এপিআই / নিয়ামককে যাত্রা করবে?
উত্তর:
ApiController একটি সম্পত্তি বলা ইউআরএল টাইপ যা System.Web.Http.Routing.UrlHelper আপনি API কন্ট্রোলার জন্য URL গুলি গঠন করতে পারবেন।
উদাহরণ:
public class ValuesController : ApiController
{
// GET /api/values
public IEnumerable<string> Get()
{
// returns /api/values/123
string url = Url.Route("DefaultApi", new { controller = "values", id = "123" });
return new string[] { "value1", "value2" };
}
// GET /api/values/5
public string Get(int id)
{
return "value";
}
...
}
এই urlHelper আপনার দৃষ্টিভঙ্গি বা মানক নিয়ামকদের মধ্যে নেই exist
হালনাগাদ:
এবং কোনও এপিআইকন্ট্রোলারের বাইরে রাউটিং করার জন্য আপনি নিম্নলিখিতটি করতে পারেন:
public class HomeController : Controller
{
public ActionResult Index()
{
string url = Url.RouteUrl(
"DefaultApi",
new { httproute = "", controller = "values", id = "123" }
);
return View();
}
}
বা একটি দৃশ্যের ভিতরে:
<script type="text/javascript">
var url = '@Url.RouteUrl("DefaultApi", new { httproute = "", controller = "values", id = "123" })';
$.ajax({
url: url,
type: 'GET',
success: function(result) {
// ...
}
});
</script>
httproute = ""গুরুত্বপূর্ণ রুট টোকেন লক্ষ্য করুন ।
স্পষ্টতই এটি ধরে নিয়েছে যে আপনার এপিআই রুটটি DefaultApiআপনার রেজিস্টাররুটে পদ্ধতিতে এখানে কল করা হয়েছে Global.asax:
routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
System.Web.Mvc.UrlHelperএইচটিটিপি কনট্রোলারকন্টেক্সটের বাইরের এপি রুট তৈরি করতে সাধারণ ব্যবহার করতে পারি তা বোঝাতে আমি আমার উত্তর আপডেট করেছি ।
এটি এর সরল রূপের সাথে কাজ করে Url.Actionসুতরাং আপনাকে কোনও রাউটিংয়ের নাম উল্লেখ করতে হবে না:
Url.Action("ActionName", "ControllerName", new { httproute = "DefaultApi" })
area = ""যদি কোনও অঞ্চলের মধ্যে URL এর প্রয়োজন হয় তবে আপনি একটি যুক্ত করতে চাইতে পারেন । (এপিআই কন্ট্রোলাররা ডিফল্টরূপে অঞ্চলের বাইরে থাকেন)) আমি এমভিসি 4 ব্যবহার করছি।
Url.Actionএকটি ভিউ থেকে ব্যবহৃত হচ্ছে। Urlধরণের System.Web.Mvc.UrlHelper, এবং এটি WebApiরুটে মানচিত্র করে না । এই কেন আপনি অতিরিক্ত প্যারামিটার প্রয়োজন হয়: new { httproute = "" }।
httproute""তবে এটি ম্যাপিং করছে না / /
@Html.ActionLink("link", "Get", "Servers", new { id = r.idServer, area = "", httproute = "" }, null) তবে এটি পুরোপুরি কার্যকর হয়েছিল
হার্ডকডযুক্ত স্ট্রিং (নিয়ন্ত্রকের নাম) ছাড়াই টাইপসেফ পদ্ধতিতে লিঙ্কগুলি তৈরি করতে সক্ষম হতে চান?
তার জন্য একটি নুগেট আছে! (এবং এটি মার্ক সিম্যান লিখেছেন)
https://github.com/ploeh/Hyprlinkr
এর মতো কাজ করে:
রুটগুলি, যথারীতি:
name: "API Default",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
একটি ইউআরএল পান:
var linker = new RouteLinker(request);
var uri = linker.GetUri<FooController>(r => r.GetById(1337));
ফলাফল:
http://localhost/api/foo/1337
প্রশ্নের উত্তর দেওয়ার জন্য এখানে কিআইএসএস পদ্ধতি রয়েছে:
আপনি যদি এমভিসি কন্ট্রোলার ইউআরএল তৈরি করতে এই কোডটি ব্যবহার করেন
@Url.Action("Edit", "MyController")
নিয়ামকটির API সংস্করণটির জন্য একটি URL পাওয়ার জন্য (আপনি একই নিয়ামকের নামটি ধরে নিচ্ছেন) ধরে নিতে পারেন
@Url.Action("Edit", "api/MyController")
সমস্ত ইউআরএল.অ্যাকশন পদ্ধতিটি যা করছে নিয়ন্ত্রকের নাম সহ অ্যাপ্লিকেশনটির মূল পাথ সংযোজন করা হয় তার পরে ক্রিয়া নামটি অনুসরণ করা হয় (যদি এটি "সূচক না হয় তবে এটি সংযুক্ত না হয়। যদি রুটের মান অবজেক্টের আইডি থাকে) সম্পত্তি মানটি ইউআরএল-এ যুক্ত হয়।
api/আমার নিয়ামকের নামটির আগে আমি অনুপস্থিত ছিলাম ।