Saturday, January 7, 2017

Routing web api

Routing is how Web API matches a URI to an action

Web API used convention-based routing

https://github.com/api2/github/iamchamith/BestPractices/blob/master/Test.ts


[RoutePrefix("api2")]
   public class RoutingExampleController : ApiController
   { 
       [Route("github/{user}/{repo}/blob/master/{file}")]
       public string GetFile(string user,string repo,string file) {
 
           return $"{user}-> {repo}->{file}";
       }
   }

github is must


Route Constraints

[Route("user/{id:int}")]
       public string GetUser(int id)
       {
 
           return "Chamith " + id;
       }


ConstraintDescriptionExample
alphaMatches uppercase or lowercase Latin alphabet characters (a-z, A-Z){x:alpha}
boolMatches a Boolean value.{x:bool}
datetimeMatches a DateTime value.{x:datetime}
decimalMatches a decimal value.{x:decimal}
doubleMatches a 64-bit floating-point value.{x:double}
floatMatches a 32-bit floating-point value.{x:float}
guidMatches a GUID value.{x:guid}
intMatches a 32-bit integer value.{x:int}
lengthMatches a string with the specified length or within a specified range of lengths.{x:length(6)}
{x:length(1,20)}
longMatches a 64-bit integer value.{x:long}
maxMatches an integer with a maximum value.{x:max(10)}
maxlengthMatches a string with a maximum length.{x:maxlength(10)}
minMatches an integer with a minimum value.{x:min(10)}
minlengthMatches a string with a minimum length.{x:minlength(10)}
rangeMatches an integer within a range of values.{x:range(10,50)}
regexMatches a regular expression.{x:regex(^\d{3}-\d{3}-\d{4}$)}

Optional URI Parameters and Default Values

Default parameter
public class BooksController : ApiController
{
    [Route("api/books/locale/{lcid:int?}")]
    public IEnumerable<Book> GetBooksByLocale(int lcid = 1033) { ... }
}
Url parameter
public class BooksController : ApiController
{
    [Route("api/books/locale/{lcid:int=1033}")]
    public IEnumerable<Book> GetBooksByLocale(int lcid) { ... }
}
Init routing in application startup 
inside Globle.asax

protected void Application_Start()
        {
            RouteConfig.RegisterRoutes(RouteTable.Routes);
        }


Using router table


public static class WebApiConfig
    {
        public static void Register(HttpConfiguration config)
        {
          // Web API routes
           config.MapHttpAttributeRoutes();
 
           config.Routes.MapHttpRoute(
               name: "DefaultApi",
               routeTemplate: "api/{controller}/{action}/{id}",
               defaults: new { id = RouteParameter.Optional }
           );
     }
}







No comments:

Post a Comment

CS Events