This is a single archived entry from Stefan Tilkov’s blog. For more up-to-date content, check out my author page at INNOQ, which has more information about me and also contains a list of published talks, podcasts, and articles. Or you can check out the full archive.

REST Book: References

Stefan Tilkov,

I just finalized the list of references for my book on REST (in case you don't know it: the first version is written in German and due to be available in July; I'm currently talking to a few US publishers, too) – and I thought I might just as well post it here. Interestingly, you can make a very good guess at the outline from this list …

  1. Fielding, Roy Thomas: Architectural Styles and the Design of Network-based Software Architectures. Doctoral dissertation, University of California, Irvine, 2000, http://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm
  2. RFC 2616: Hypertext Transfer Protocol – HTTP/1.1, http://www.ietf.org/rfc/rfc2616.txt
  3. Vinoski, Steve: Serendipitous Reuse, IEEE Internet Computing, http://computer.org/portal/pages/dsonline/2008/02/w1tow.xml
  4. Megginson, David: „With REST, every piece of information has its own URL.“; http://www.megginson.com/blogs/quoderat/2007/02/15/rest-the-quick-pitch/
  5. Carlyle, Benjamin: REST Rewiring, http://soundadvice.id.au/blog/2008/04/18/
  6. RFC 3986: Uniform Resource Identifier (URI): Generic Syntax, http://www.ietf.org/rfc/rfc3986.txt
  7. Bray, Tim: The Universal Republic of Love, http://www.tbray.org/ongoing/When/200x/2003/02/27/URL
  8. Yahoo! API Documentation, „Retrieving Partial Resources“, http://developer.yahoo.com/social/rest_api_guide/partial-resources.html#paging-collection
  9. URI Templates, http://bitworking.org/projects/URI-Templates/spec/draft-gregorio-uritemplate-03.html
  10. Nielsen, Jakob:URL as UI, http://www.useit.com/alertbox/990321.html
  11. RFC 893: Transmission Control Protocol, http://www.ietf.org/rfc/rfc0793.txt
  12. Ambler, Scott: Choosing a Primary Key: Natural or Surrogate?, http://www.agiledata.org/essays/keys.html
  13. Squid, http://www.squid-cache.org/
  14. Baker, Mark: Accidentally RESTful, http://www.markbaker.ca/blog/2005/04/accidentally-restful/
  15. Berners-Lee, Tim: Cool URIs don't change, http://www.w3.org/Provider/Style/URI
  16. Google Web Accelerator, http://webaccelerator.google.com/
  17. Fried, Jason: Google Web Accelerator: Hey, not so fast, http://tinyurl.com/asntk
  18. Fielding, Roy T.:, http://tech.groups.yahoo.com/group/rest-discuss/message/442?var=0
  19. HTML 5: A vocabulary and associated APIs for HTML and XHTML, http://dev.w3.org/html5/spec/Overview.html
  20. Ajax, Wikipedia-Definition: http://en.wikipedia.org/wiki/Ajax_(programming)
  21. JQuery: The Write Less, Do More JavaScript Library, http://jquery.com/
  22. Prototype JavaScript framework: Easy Ajax and DOM manipulation for dynamic web applications, http://www.prototypejs.org/
  23. Google Data APIs (GData), http://code.google.com/apis/gdata/
  24. RFC 3864: Registration Procedures for Message Header Fields, http://www.ietf.org/rfc/rfc3864.txt
  25. WebDAV, http://www.webdav.org/
  26. RFC 4918: HTTP Extensions for Web Distributed Authoring and Versioning, http://www.webdav.org/specs/rfc4918.html
  27. RFC 3253: Versioning Extensions to WebDAV, http://www.webdav.org/specs/rfc3253.html
  28. PATCH Method for HTTP, http://tools.ietf.org/id/draft-dusseault-http-patch-11.txt
  29. Sayre, Robert: Simple Synchronization Method for JSON Objects, https://bugzilla.mozilla.org/attachment.cgi?id=269420
  30. Nottingham, Mark: Link Relations and HTTP Header Linking, Internet Draft, http://tools.ietf.org/id/draft-nottingham-http-link-header-03.txt
  31. Fielding, Roy T.: „REST APIs must be hypertext-driven“, http://roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-driven
  32. RFC 2046: Multipurpose Internet Mail Extensions (MIME) Part Two: Media Types, http://www.ietf.org/rfc/rfc2046.txt
  33. Associating Resources with Namespaces, W3C TAG Finding, http://www.w3.org/2001/tag/doc/nsDocuments/
  34. RFC 3023: XML Media Types, http://www.ietf.org/rfc/rfc3023.txt
  35. IANA MIME Media Types, http://www.iana.org/assignments/media-types/
  36. RFC 4288: Media Type Specifications and Registration Procedures, http://www.ietf.org/rfc/rfc4288.txt
  37. UBL (Universal Business Language) V2.0, http://docs.oasis-open.org/ubl/os-UBL-2.0/UBL-2.0.html
  38. HTML 4.01 Specification, http://www.w3.org/TR/html401/
  39. XHTML™ 1.0 The Extensible HyperText Markup Language (Second Edition), http://www.w3.org/TR/xhtml1/
  40. Pilgrim, Mark: The Road to XHTML 2.0: MIME Types, http://www.xml.com/pub/a/2003/03/19/dive-into-xml.html
  41. RFC 5147: URI Fragment Identifiers for the text/plain Media Type, http://www.ietf.org/rfc/rfc5147.txt
  42. RFC 2483: URI Resolution Services Necessary for URN Resolution, http://www.ietf.org/rfc/rfc2483.txt
  43. RFC 4180: Common Format and MIME Type for Comma-Separated Values (CSV) Files, http://www.ietf.org/rfc/rfc4180.txt
  44. JSON (JavaScript Object Notation), http://json.org/
  45. RFC 4627: The application/json Media Type for JavaScript Object Notation (JSON) http://www.ietf.org/rfc/rfc4627.txt
  46. RSS 2.0 Specification, http://cyber.law.harvard.edu/rss/rss.html
  47. RFC 4287: The Atom Syndication Format, http://www.ietf.org/rfc/rfc4287.txt
  48. RFC 5005: Feed Paging and Archiving, http://www.ietf.org/rfc/rfc5005.txt
  49. RFC 4685: Atom Threading Extensions, http://www.ietf.org/rfc/rfc4685.txt
  50. Microformats-Community, http://microformats.org/
  51. Resource Description Framework (RDF): http://www.w3.org/RDF/
  52. Beckett, David: Turtle – Terse RDF Triple Language, http://www.dajobe.org/2004/01/turtle/
  53. Dublin Core Metadata Element Set, Version 1.1, http://dublincore.org/documents/dces/
  54. RDF Vocabulary Description Language 1.0: RDF Schema, http://www.w3.org/TR/rdf-schema/
  55. OWL Web Ontology Language, http://www.w3.org/TR/owl-ref/
  56. Allemang, Dean; Hendler, James A.: Semantic Web for the Working Ontologist: Effective Modeling in RDFS and OWL, Morgan/Kaufman, 2008
  57. Pilgrim, Mark: Should Atom Use RDF?, http://www.xml.com/pub/a/2003/08/20/dive.html
  58. Mazzocchi, Stefano: A No-Nonsense Guide to Semantic Web Specs for XML People, http://www.betaversion.org/~stefano/linotype/news/57/
  59. RFC 5023: The Atom Publishing Protocol, http://www.ietf.org/rfc/rfc5023.txt
  60. Pilgrim, Mark: The myth of RSS compatibility, http://diveintomark.org/archives/2004/02/04/incompatible-rss
  61. Tomoyako, Ryan: Things Caches Do, http://tomayko.com/writings/things-caches-do
  62. Nothingham, Mark: The State of Proxy Caching, http://www.mnot.net/blog/2007/06/20/proxy_caching
  63. Nottingham, Mark: The State of Browser Caching, http://www.mnot.net/blog/2006/05/11/browser_caching
  64. Nottingham, Mark: Caching Tutorial for Web Authors and Webmasters, http://www.mnot.net/cache_docs/
  65. RFC 5246: The Transport Layer Security (TLS) Protocol Version 1.2, http://tools.ietf.org/rfc/rfc5246
  66. Google APIs: Authentication for Installed Applications, http://code.google.com/apis/accounts/docs/AuthForInstalledApps.html
  67. RFC 2617: HTTP Authentication: Basic and Digest Access Authentication, http://www.ietf.org/rfc/rfc2617.txt
  68. RFC 2104: HMAC: Keyed-Hashing for Message Authentication, http://www.ietf.org/rfc/rfc2104.txt
  69. Amazon S3 REST Authentication, http://docs.amazonwebservices.com/AmazonS3/2006-03-01/index.html?RESTAuthentication.html
  70. Google: How to use Post-Commit Web Hooks for your project, http://code.google.com/p/support/wiki/PostCommitWebHooks
  71. OpenID Authentication 2.0, http://openid.net/specs/openid-authentication-2_0.html
  72. RFC 2631: Diffie-Hellman Key Agreement Method, http://tools.ietf.org/rfc/rfc2631
  73. OAuth Core 1.0, http://oauth.net/core/1.0/
  74. Hammer-Lahav, Eran: Beginner’s Guide to OAuth, http://www.hueniverse.com/hueniverse/2007/10/beginners-guide.html
  75. mod_authz_ldap: An Apache LDAP Authorization module, http://authzldap.othello.ch/
  76. Clark, James: HTTP: what to sign?, http://blog.jclark.com/2007/10/http-what-to-sign.html
  77. XML Encryption Syntax and Processing, http://www.w3.org/TR/2002/REC-xmlenc-core-20021210
  78. XML-Signature and Syntax Processing, http://www.w3.org/TR/2002/REC-xmldsig-core-20020212
  79. Google Data APIs Authentication Overview, http://code.google.com/apis/gdata/auth.html
  80. WSDL 1.1, W3C Note, http://www.w3.org/TR/wsdl
  81. WSDL 2.0, W3C Recommendation, http://www.w3.org/TR/wsdl20/
  82. WADL (Web Application Description Language), https://wadl.dev.java.net/
  83. Resource Directory Description Language (RDDL), http://www.rddl.org/
  84. Advanced Message Queuing Protocol (AMQP), http://www.amqp.org
  85. WS Reliable Messaging (WS RM), http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=wsrm
  86. UDDI Version 3 Specification, http://www.oasis-open.org/committees/uddi-spec/doc/tcspecs.htm#uddiv3
  87. A Universally Unique Identifier (UUID) URN Namespace, http://tools.ietf.org/html/rfc4122
  88. Gregorio, Joe: RESTify DayTrader, http://bitworking.org/news/201/RESTify-DayTrader
  89. Nottingham, Mark: POST Once Exactly, http://www.mnot.net/drafts/draft-nottingham-http-poe-00.txt
  90. Goland, Yaron: SOA-Reliability (SOA-Rity) for HTTP, http://www.goland.org/soareliability/
  91. de hÓra, Bill: HTTPLR, http://dehora.net/doc/httplr/draft-httplr-01.html
  92. Two-phase commit protocol, http://en.wikipedia.org/wiki/Two-phase_commit_protocol
  93. Musgrove, Michael: Transactional support for JAX RS based applications, http://www.jboss.org/community/wiki/TransactionalsupportforJAXRSbasedapplications
  94. Editing the Web: Detecting the Lost Update Problem Using Unreserved Checkout; http://www.w3.org/1999/04/Editing/
  95. Loughran, Steve; Smith, Edmund: Rethinking the Java SOAP Stack, http://www.hpl.hp.com/techreports/2005/HPL-2005-83.pdf
  96. Postel’sches Gesetz (Postel’s Law), auch Robustness Principle, http://en.wikipedia.org/wiki/Robustness_Principle
  97. Bray, Tim; Dracon and Postel, http://www.tbray.org/ongoing/When/200x/2003/08/19/Draconianism
  98. Starke, Gernot; Tilkov, Stefan (Hrsg.): SOA-Expertenwissen, dpunkt-Verlag, http://soa-expertenwissen.de
  99. MuleSource Galaxy, http://www.mulesource.org/display/GALAXY/Home
  100. WSO2 Registry, http://wso2.org/projects/registry
  101. HP Systinet 2, http://www.google.com/search?q=hp+systinet
  102. WS-BPEL: Web Services Business Process Execution Language Version 2.0, http://docs.oasis-open.org/wsbpel/2.0/OS/wsbpel-v2.0-OS.html
  103. curl, http://curl.haxx.se/
  104. GNU Wget, http://www.gnu.org/software/wget/
  105. Stenberg, Daniel: curl vs. Wget, http://daniel.haxx.se/docs/curl-vs-wget.html
  106. Netcraft, April 2009 Web Server Survey, http://news.netcraft.com/archives/2009/04/06/april_2009_web_server_survey.html
  107. nginx, http://nginx.net/
  108. lighttpd, http://www.lighttpd.net/
  109. W3C, ESI Language Specification 1.0, http://www.w3.org/TR/esi-lang
  110. Nottingham, Mark: Cache Channels for Squid, http://www.mnot.net/cache_channels/
  111. The Varnish Project, http://varnish.projects.linpro.no/
  112. Varnish: Notes from the Architect, http://varnish.projects.linpro.no/wiki/ArchitectNotes
  113. JSR 311: JAX-RS: The JavaTM API for RESTful Web Services, http://jcp.org/en/jsr/detail?id=311
  114. Jersey, JAX-RS (JSR 311) Reference Implementation, https://jersey.dev.java.net/
  115. JBoss RestEasy, http://www.jboss.org/resteasy/
  116. JSR 311 Final, InfoQ, http://www.infoq.com/news/2008/09/jsr311-approved
  117. Tilkov, Stefan: RESTful Web Services mit Java; JavaMagazin 01/2009, https://www.innoq.com/files/JM_1.09_tilkov_jax-RS.pdf
  118. Restlet – Lightweight REST framework, http://www.restlet.org/
  119. Spring MVC, http://www.springsource.org
  120. Windows Communication Foundation (WCF), http://www.microsoft.com/net/WindowsCommunicationFoundation.aspx
  121. Skonnard, Aaron: A Guide to Designing and Building RESTful Web Services with WCF 3.5, http://msdn.microsoft.com/en-us/library/dd203052.aspx
  122. Microsoft ASP.NET MVC, http://www.asp.net/mvc/
  123. Ruby on Rails, http://rubyonrails.org
  124. Tilkov, Stefan: RESTful Web Services mit Rails; RailsWay 01/2009, https://www.innoq.com/files/RM_1.09_tilkov_REST.pdf
  125. httplib2, http://code.google.com/p/httplib2/
  126. web.py, http://webpy.org/
  127. Django, http://www.djangoproject.com/
On May 31, 2009 8:54 PM, Colin Jack said:

Any book with that many references has to be good.

On June 1, 2009 8:19 AM, Subbu Allamaraju said:

That is an impressive list of references, useful for anyone interested in this area.

On June 1, 2009 12:55 PM, duryodhan said:

Really — HATEOAS needs more refs — Roy’s posts don’t help for many first timers.

I remember it all clicked in for me when I read http://www.stucharlton.com/blog/archives/000141.html

On June 8, 2009 5:18 AM, Benjamin Carlyle said:

I’ll be interested to see what you come up with. I suspect that your book and the one I am working on will have a fair bit of overlap ;)

On June 8, 2009 7:37 AM, Stefan Tilkov said:

Ben, I didn’t know you were writing one – very much looking forward to it :-)

On June 12, 2009 2:27 PM, Benjamin Carlyle said:

I have become a co-author on SOA with REST. What can I say? I read Thomas Erl’s Principles of Service Design and developed a man-crush.