This section will describe how Umbraco Api controllers are routed and how to retreive their URLs
Just like Surface Controllers in Umbraco, when you inherit from the base class Umbraco.Web.WebApi.UmbracoApiController
we will auto-route this controller so you don't have to worry about routing at all.
All locally declared Umbraco api controllers will be routed under the url path of:
~/Umbraco/Api/[YourControllerName]
All plugin based Umbraco api controlleres will be routed under the url path of:
~/Umbraco/[YourAreaName]/[YourControllerName]
We've added some handy UrlHelper extension methods so you can easily retrieve the Url of your Umbraco Api controllers. The extension methods are found in the class: Umbraco.Web.UrlHelperExtensions
so you'll need to ensure you have the namespace Umbraco.Web
imported.
The method overloads are:
string GetUmbracoApiService<T>(string actionName)
string GetUmbracoApiService(string actionName, Type apiControllerType)
string GetUmbracoApiService(string actionName, string controllerName)
string GetUmbracoApiService(string actionName, string controllerName, string area)
The easiest way to retrieve a Url is to use your controller's type. Example:
@Url.GetUmbracoApiService<ProductsApiController>("GetAllProducts")
Generally a UrlHelper instance will be available on most base classes like Controllers and Views but In some cases you might need to create a UrlHelper instance manually. Here's an example of a way to do that:
var requestContext = HttpContext.Current.Request.RequestContext;
var urlHelper = new System.Web.Mvc.UrlHelper(requestContext);
var apiControllerUrl = urlHelper.GetUmbracoApiService("GetAllProducts");