<p>I am looking for some good links with best practices and sample code on creating <a href="http://en.wikipedia.org/wiki/Representational_State_Transfer" rel="noreferrer">REST</a>ful web services using .NET.  </p>

<p>Also, any other input you might have regarding REST would be greatly appreciated.</p>

[{'answer_id': 60479, 'author': 'aku', 'author_id': 1196, 'author_profile': 'https://Stackoverflow.com/users/1196', 'pm_score': 3, 'selected': False, 'text': '<p>Windows Communication Foundation <a href="http://blogs.conchango.com/anthonysteele/archive/2008/03/15/rest-from-wcf-3-5.aspx" rel="nofollow noreferrer">supports REST model since .NET 3.5</a>.</p>\n\n<p>You can find documentation and code samples on MSDN:</p>\n\n<p><a href="http://msdn.microsoft.com/en-us/library/aa395208.aspx" rel="nofollow noreferrer">REST and POX</a></p>\n\n<p>Some resources to learn REST:</p>\n\n<ul>\n<li><a href="http://www.xfront.com/files/rest.html" rel="nofollow noreferrer">REST documentation on xFront.com</a></li>\n<li><a href="http://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm" rel="nofollow noreferrer">Architectural Styles and the Design\nof Network-based Software\nArchitectures. Chapter 5:\nRepresentational State Transfer\n(REST)</a> (Ph.D dissertation of Roy Fielding - author of REST)</li>\n<li><a href="http://en.wikipedia.org/wiki/Representational_State_Transfer" rel="nofollow noreferrer">Wikipedia entry</a></li>\n</ul>\n'}, {'answer_id': 60485, 'author': 'Peter Hilton', 'author_id': 2670, 'author_profile': 'https://Stackoverflow.com/users/2670', 'pm_score': 3, 'selected': False, 'text': '<p>The best introduction I have read is the <a href="http://www.crummy.com/writing/RESTful-Web-Services/" rel="nofollow noreferrer">RESTful Web Services book</a>, which goes beyond explaining the model and principles and actually shows you how to design a RESTful web service. Most useful is its checklist for how to write/specify an REST API:</p>\n\n<ol>\n<li>Figure out the data set [i.e. specify the data model].</li>\n<li>Split the data set into resources. For each kind of resource:</li>\n<li>Name the resources with URIs.</li>\n<li>Expose a subset of the uniform interface [i.e. specify which HTTP methods are used and what they do].</li>\n<li>Design the representations(s) accepted from the client [e.g. the XML format you can PUT or POST].</li>\n<li>Design the representations(s) served to the client [e.g. the XML you get back].</li>\n<li>Integrate this resource into existing resources, using hypermedia links and forms.</li>\n<li>Consider the typical course of events: what\'s supposed to happen? [This is like a use case main success scenario.]</li>\n<li>Consider error conditions. [This is like use case exception scenarios.]</li>\n</ol>\n'}, {'answer_id': 60491, 'author': 'Gulzar Nazim', 'author_id': 4337, 'author_profile': 'https://Stackoverflow.com/users/4337', 'pm_score': 6, 'selected': True, 'text': '<p><a href="http://msdn.microsoft.com/en-us/magazine/cc748663.aspx?pr=blog" rel="noreferrer">ADO.Net Data Servcies</a> makes it really easy to build and <a href="http://msdn.microsoft.com/en-us/magazine/cc794279.aspx" rel="noreferrer">consume</a> RESTful web services in the .Net world but nevertheless understanding the concepts is important. Compared to WCF (which added REST support later), ADO.Net Data Services was built primarily for REST.</p>\n\n<p><a href="http://www.25hoursaday.com/weblog/2007/11/19/GuidelinesForBuildingRESTfulWebServices.aspx" rel="noreferrer">Guidelines for Building RESTful Web Services</a> has all the info on the resources you need.</p>\n\n<p>This is another useful <a href="http://www.25hoursaday.com/weblog/2008/08/17/ExplainingRESTToDamienKatz.aspx" rel="noreferrer">blog entry</a>:</p>\n\n<p>The uniform interface constraints describe how a service built for the Web can be a good participant in the Web architecture. These constraints are described briefly as follows :</p>\n\n<p>1) Identification of resources: A resource is any information item that can be named and represented (e.g. a document, a stock price at a given point in time, the current weather in Las Vegas, etc). Resources in your service should be identified using URIs. </p>\n\n<p>2) Manipulation of resources via representations: A representation is the physical representation of a resource and should correspond to a valid media type. Using standard media types as the data formats behind your service increases the reach of your service by making it accessible to a wide range of potential clients. Interaction with the resource should be based on retrieval and manipulation of the representation of the resource identified by its URI. </p>\n\n<p>3)Self-descriptive messages: Following the principles of statelessness in your service\'s interactions, using standard media types and correctly indicating the cacheability of messages via HTTP method usage and control headers ensures that messages are self descriptive. Self descriptive messages make it possible for messages to be processed by intermediaries between the client and server without impacting either. </p>\n\n<p>4)Hypermedia as the engine of application state: Application state should be expressed using URIs and hyperlinks to transition between states. This is probably the most controversial and least understood of the architectural constraints set forth in <a href="http://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm" rel="noreferrer">Roy Fielding\'s dissertation</a>. In fact, Fielding\'s dissertation contains an explicit arguments against using HTTP cookies for representing application state to hammer this point home yet it is often ignored.</p>\n'}, {'answer_id': 67268, 'author': 'Community', 'author_id': -1, 'author_profile': 'https://Stackoverflow.com/users/-1', 'pm_score': 2, 'selected': False, 'text': '<p><a href="http://www.peej.co.uk/articles/restfully-delicious.html" rel="nofollow noreferrer"> "A very clear article on how to make a web service more RESTful using delicious"</a></p>\n'}, {'answer_id': 67818, 'author': '8jean', 'author_id': 10011, 'author_profile': 'https://Stackoverflow.com/users/10011', 'pm_score': 2, 'selected': False, 'text': '<p>The articles from the "<a href="http://www.xml.com/pub/au/225" rel="nofollow noreferrer">RESTful Web</a>" series at <a href="http://www.xml.com/" rel="nofollow noreferrer">xml.com</a> are a great\nintroduction.</p>\n\n<p>The author (Joe Gregorio, of The Atom Publishing Protocol fame) also\nregularly publishes insightful articles about all things REST on his\n<a href="http://bitworking.org/news/" rel="nofollow noreferrer">weblog</a>. "<a href="http://bitworking.org/news/201/RESTify-DayTrader" rel="nofollow noreferrer">RESTify DayTrader</a>" (REST\nArchitecture applied to a benchmark stock trading application) is a good starting point. I also like "<a href="http://bitworking.org/news/Why_so_many_Python_web_frameworks" rel="nofollow noreferrer">Why so many Python web frameworks?</a>", which shows the implementation of a small restful web framework in Python.</p>\n'}, {'answer_id': 13855801, 'author': 'Rafa', 'author_id': 1875384, 'author_profile': 'https://Stackoverflow.com/users/1875384', 'pm_score': 1, 'selected': False, 'text': "<p>When I began developing REST web services I read REST API Design Rulebook from Mark Masse. Once you know the basics and the theory, you will be able to implement REST with WCF, HTTPListener or ServiceStack. All these frameworks are .NET and quite good documented... </p>\n\n<p>I would recommend to you service stack (http://www.servicestack.net/) there is enough information on the web to get started. </p>\n\n<p>WCF offers the ASP.NET web API, it is OK, but I don't use it.</p>\n\n<p>In any case, there is no good REST framework today, you have to choose one that you find easy to use and then apply the theory that you learned from the book.</p>\n"}]
['https://Stackoverflow.com/questions/60477', 'https://Stackoverflow.com', 'https://Stackoverflow.com/users/1768/']