• Like
ASP.NET MVC routing
Upcoming SlideShare
Loading in...5
×

ASP.NET MVC routing

  • 3,096 views
Uploaded on

 

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
3,096
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
14
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Routing in ASP.NET MVC Creating a RESTful interface to your site
  • 2. Remember, browsers make HTTP requests
  • 3. HTTP requests use a verb to communicate their intent › GET › POST › PUT › DELETE
  • 4. Alright. Got that out of the way. Now back to our regularlyscheduled lecture. ›  asdf
  • 5. Which is better? This … http://tic.com/Report.aspx? t=Sales&y=2013&m=07! … or this … http://tic.com/Sales/2013/7! Why?
  • 6. Reasons ›  SEO ›  Easy to type ›  Easy to remember ›  Hides implementation stack ›  URLs don’t have to change when the site changes. ›  Hackable
  • 7. URLs point to resources. ›  Uniform ________________ locator ›  They don’t point to pages ›  So RESTful URLs are more accurate, actually
  • 8. HI, I'm Roy Fielding, the inventor of REST. REST is ... an architectural style … for addressing resources … in a stateless environment … that reduces coupling
  • 9. A RESTful URL is one that conforms to all of the constraints ›  Separation between client and server ›  Stateless communication ›  Cacheable ›  A layered system ›  A uniform interface
  • 10. A layered system has predictable parts The usual method Properly RESTful url Category Category Thing Thing Action ID ID (Use HTTP method as action)
  • 11. Use the HTTP requests to specify the action › GET › POST › PUT › DELETE
  • 12. The URL should act as an API › http://tic.com/Customer/List › http://tic.com/Customer/Create › http://tic.com/Customer/Details/71 › http://tic.com/Customer/Edit/71 › http://tic.com/Customer/Delete/71 › http://tic.com/Department › http://tic.com/Employee › http://tic.com/AddToCart/17
  • 13. Or better yet ... › GET http://tic.com/Customer › POST http://tic.com/Customer › GET http://tic.com/Customer/71 › PUT http://tic.com/Customer/71 › DELETE http://tic.com/Customer/71 › GET http://tic.com/Department › GET http://tic.com/Employee › POST http://tic.com/AddToCart/17
  • 14. There are certain things you can do to make a URL RESTful ›  Give every “thing” an ID ›  Link things together ›  Use standard methods ›  Communicate statelessly ›  Provide multiple representations
  • 15. Resources with multiple representations › HTML › XML › VCard › RSS
  • 16. Okay, I'm sold on RESTful urls. How do I get them into MVC?
  • 17. Registering routes tells IIS that if a user asks for X, send them to Y
  • 18. We use the MapRoute() method to create these routes MyRoutes.MapRoute(! string RouteName,! string UrlPattern,! object Defaults);! ›  Says when an url matching UrlPattern comes through, what do we do with it?
  • 19. Routing in ASP.NET MVC are set 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! );! }!
  • 20. Routes are matched in order that they appear
  • 21. Hardcoded routes are easy routes.MapRoute(! "ListAllProducts",! "Product/List",! new { ! controller="Home", ! action="ShowProducts"! }! );!
  • 22. Hands-on literal routes
  • 23. Can receive arguments by putting them in curly braces ›  aka. URL Parameters
  • 24. Examples Route definition Example of matching url {controller}/{action}/{category} Product/show/beverage {table}/details.aspx Products/Details.aspx blog/{action}/{entry} blog/read/1234 blog/{entry}-{SEOString} blog/2234-Why-string-theory-isflawed {reportType}/{year}/{month}/{day} sales/2012/7/15 {locale}/{action} en-US/show
  • 25. Hands-on matching routes
  • 26. Optional parameters can save you from creating a lot of routes ›  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 }!
  • 27. Hands-on optional parameters
  • 28. Hands-on default values
  • 29. Regular expression constraints routes.MapRoute(! "BlogArchive",! "Archive/{entryDate}",! new { controller="Blog", action="Archive" }, ! new { entryDate=@"d{2}-d{2}-d{4}" }! );!
  • 30. Hands-on constraints
  • 31. 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 using RegisterRoutes()
  • 32. Oh! And one more thing ... These routes work for WebForms also ›  They're exactly the same.