Routing inASP.NET MVC
Remember, browsers makeHTTP requests
HTTP requests use a verb tocommunicate their intent› GET› POST› PUT› DELETE
Alright. Got that out of     the way. Now back to     our regularly-     scheduled lecture.›  asdf
Which is better?This …http://www.tic.com/Report.aspx?Type=Sales&year=2012&month=07!… or this …http://www.tic.com/Sales/201...
Reasons›  SEO›  Easy to type›  Easy to remember›  Hides implementation stack›  URLs don’t have to change when the sit...
URLs point to resources.›  Uniform  ________________ locator›  They don’t point to pages›  So RESTful URLs are more acc...
REST is …›  an  architectural style …›  for addressing resources …›  in a stateless environment …›  that reduces coupl...
A RESTful URL is one thatconforms to all of the constraints›  Separation  between client and server›  Stateless communic...
A layered system has predictableparts The usual method   Properly RESTful url Category           Category Thing           ...
Use the HTTP requests to specifythe action› GET› POST› PUT› DELETE
The URL should act as an API› http://tic.com/Associate/List› http://tic.com/Associate/Create› http://tic.com/Associate/...
There are certain things youcan do to make a URL RESTful›  Give  every “thing” an ID›  Link things together›  Use stand...
Give every thing an ID  ›  Easy         to do if youre using a primary    key and a database behind it
Link things together›  Also   easy to do if youre using HTML
Use standard methods
Resources with multiple representations› HTML› XML› VCard
Communicate statelessly›  Aaaand   yet again, the web makes this easy.
Okay, Im sold on RESTful urls.How do I get them intoMVC?
Registeringroutes tellsIIS that if auser asksfor X, sendthem to Y
We use the MapRoute()method to create these routesMyRoutes.MapRoute(!     string RouteName,!     string URL,!     object D...
Routing in ASP.NET MVC areset in Application_Start›  Pulled   out into a static method by default.public static void Regi...
Routes are matched in orderthat they appear
These routes work for WebFormsalso›  Theyre   exactly the same.
Hardcoded routes are easyroutes.MapRoute(!  "ListAllProducts",!  "Product/List",!  "~/Admin/Products.aspx?id=all",!  false...
Hands-on literal routes
We put placeholders in curlybraces›  aka.   URL Parameters
ExamplesRoute definition             Example of matching url{controller}/{action}/       /Products/show/beverage{category}...
Hands-on matching routes
Optional parameters can saveyou from creating a lot ofroutes›  Example:    you want to match›  Clients/Miller›  Clients...
Hands-on optional parameters
Hands-on default values
The parameters can have oneof two types of constraints1.    Regular expressions2.    An IRouteConstraint
Regular expression constraintsroutes.MapRoute(!  "BlogArchive",!  "Archive/{entryDate}",!  new { controller="Blog", action...
Hands-on constraints
Conclusion›  RESTful   urls are easier to use, therefore    better›  MVC lends itself well to REST; in fact REST is    p...
Further study›  Intro   to REST  ›  http://www.infoq.com/articles/rest-     introduction
Upcoming SlideShare
Loading in...5
×

10 routing

306

Published on

Published in: Technology, Design
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
306
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
11
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

10 routing

  1. 1. Routing inASP.NET MVC
  2. 2. Remember, browsers makeHTTP requests
  3. 3. HTTP requests use a verb tocommunicate their intent› GET› POST› PUT› DELETE
  4. 4. Alright. Got that out of the way. Now back to our regularly- scheduled lecture.›  asdf
  5. 5. Which is better?This …http://www.tic.com/Report.aspx?Type=Sales&year=2012&month=07!… or this …http://www.tic.com/Sales/2012/7! Why?
  6. 6. Reasons›  SEO›  Easy to type›  Easy to remember›  Hides implementation stack›  URLs don’t have to change when the site changes.›  Hackable
  7. 7. URLs point to resources.›  Uniform ________________ locator›  They don’t point to pages›  So RESTful URLs are more accurate, actually
  8. 8. REST is …›  an architectural style …›  for addressing resources …›  in a stateless environment …›  that reduces coupling
  9. 9. A RESTful URL is one thatconforms to all of the constraints›  Separation between client and server›  Stateless communication›  Cacheable›  A layered system›  A uniform interface
  10. 10. A layered system has predictableparts The usual method Properly RESTful url Category Category Thing Thing Action ID ID (Use HTTP method as action)
  11. 11. Use the HTTP requests to specifythe action› GET› POST› PUT› DELETE
  12. 12. The URL should act as an API› http://tic.com/Associate/List› http://tic.com/Associate/Create› http://tic.com/Associate/Details/71› http://tic.com/Associate/Edit/71› http://tic.com/Associate/Delete/71› http://tic.com/Department› http://tic.com/Customer› http://tic.com/AddToCart/17
  13. 13. There are certain things youcan do to make a URL RESTful›  Give every “thing” an ID›  Link things together›  Use standard methods›  Resources with multiple representations›  Communicate statelessly
  14. 14. Give every thing an ID ›  Easy to do if youre using a primary key and a database behind it
  15. 15. Link things together›  Also easy to do if youre using HTML
  16. 16. Use standard methods
  17. 17. Resources with multiple representations› HTML› XML› VCard
  18. 18. Communicate statelessly›  Aaaand yet again, the web makes this easy.
  19. 19. Okay, Im sold on RESTful urls.How do I get them intoMVC?
  20. 20. Registeringroutes tellsIIS that if auser asksfor X, sendthem to Y
  21. 21. We use the MapRoute()method to create these routesMyRoutes.MapRoute(! string RouteName,! string URL,! object Defaults);!›  Says when URL comes through, what do we do with it?
  22. 22. Routing in ASP.NET MVC areset in Application_Start›  Pulled out into a static method by default.public static void RegisterRoutes(RouteCollection routes)!{! routes.IgnoreRoute("{resource}.axd/{*pathInfo}");! routes.MapRoute(! "Default", // Route name! "{controller}/{action}/{id}", // URL with parms! new { controller = "Home", action = "Index", ! id = UrlParameter.Optional } // defaults! );!}!
  23. 23. Routes are matched in orderthat they appear
  24. 24. These routes work for WebFormsalso›  Theyre exactly the same.
  25. 25. Hardcoded routes are easyroutes.MapRoute(! "ListAllProducts",! "Product/List",! "~/Admin/Products.aspx?id=all",! false! );!
  26. 26. Hands-on literal routes
  27. 27. We put placeholders in curlybraces›  aka. URL Parameters
  28. 28. ExamplesRoute definition Example of matching url{controller}/{action}/ /Products/show/beverage{category}{table}/details.aspx /Products/Details.aspxblog/{action}/{entry} blog/read/1234{reportType}/{year}/{month}/ /sales/2012/7/15{day}{locale}/{action} en-US/show
  29. 29. Hands-on matching routes
  30. 30. Optional parameters can saveyou from creating a lot ofroutes›  Example: you want to match›  Clients/Miller›  Clients/Miller/Harold›  Clients/Miller/Harold/Dr›  … with the same route›  Simply make first name and title optional with:›  new { FirstName = UrlParameter.Optional, Title = UrlParameter.Optional }
  31. 31. Hands-on optional parameters
  32. 32. Hands-on default values
  33. 33. The parameters can have oneof two types of constraints1.  Regular expressions2.  An IRouteConstraint
  34. 34. Regular expression constraintsroutes.MapRoute(! "BlogArchive",! "Archive/{entryDate}",! new { controller="Blog", action="Archive" }, ! new { entryDate=@"d{2}-d{2}-d{4}" }!);!
  35. 35. Hands-on constraints
  36. 36. Conclusion›  RESTful urls are easier to use, therefore better›  MVC lends itself well to REST; in fact REST is pretty much required to get to controllers and actions›  Routes are set up in the global.asax file
  37. 37. Further study›  Intro to REST ›  http://www.infoq.com/articles/rest- introduction
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×