Simon Willison’s Weblog


35 items tagged “rest”


Is Node.js a strong platform to use to build a RESTful API platform?

Yes. It’s very, very good at speaking HTTP.

[... 27 words]


Why do some websites implement their logout link as a form post via JavaScript versus a plain old GET request?

Probably because if you implement logout as a GET action, I can force you to log out of a site by tricking you in to visiting a page with an <img src="" width="1" height="1"> element on it.

[... 64 words]

Closure Compiler Service (via) A hosted version of the Google Closure Compiler (JavaScript minifier) running on App Engine. It has both a user interface and a REST API, which means you can use it as part of an automated build process without needing to set up a local copy of the software.

# 9th August 2010, 1:17 pm / apis, closure, google, javascript, minification, rest, recovered

Elastic Search (via) Solr has competition! Like Solr, Elastic Search provides a RESTful JSON HTTP interface to Lucene. The focus here is on distribution, auto-sharding and high availability. It’s even easier to get started with than Solr, partly due to the focus on providing a schema-less document store, but it’s currently missing out on a bunch of useful Solr features (a web interface and faceting are the two that stand out). The high availability features look particularly interesting. UPDATE: I was incorrect, basic faceted queries are already supported.

# 11th February 2010, 6:33 pm / search, scaling, rest, lucene, java, elasticsearch, json, http, sharding, solr


Announcing Alice and Wonderland. Continuing the RabbitMQ “stuff to do with rabbits” naming convention, Alice is a RESTful interface to RabbitMQ which exposes information about vhosts/queues/users/exchanges/etc as JSON. Wonderland is a web UI for RabbitMQ implemented as a pure Ajax application which calls Alice.

# 17th July 2009, 9:12 am / aliceinwonderland, rabbitmq, alice, wonderland, rest, json, ajax, javascript, message-queues, queues

Installing Django, Solr, Varnish and Supervisord with Buildout. Useful, detailed instructions... but I still think this stuff is Way Too Difficult at the moment. I’m a big fan of the idea of sites that are assembled from multiple smaller web services talking HTTP to each other, but ensuring all the moving parts stay running is massively more painful than just running Apache and MySQL.

# 7th June 2009, 1:54 pm / apache, mysql, sysadmin, operations, rest, django, solr, varnish, supervisord, buildout, python, bertrandmathieu

resty. 58 lines of bash provides a better command-line interface to RESTful APIs, using curl under the hood. This should save me from running “man curl” several times a week.

# 18th May 2009, 1:07 pm / curl, rest, apis, resty, commandline, bash

django-piston. Promising looking Django mini-framework for creating RESTful APIs, from the bitbucket team. Ticks all of Jacob’s boxes, even including built-in pluggable authentication support with HTTP Basic, Digest and OAuth out of the box.

# 30th April 2009, 7:55 pm / django, rest, restful, python, apis, authentication, oauth, digest, piston, jespernoehr, bitbucket

REST worst practices. Jacob Kaplan-Moss’ thoughts on the characteristics of a well designed Django REST API library, from November 2008.

# 30th April 2009, 7:53 pm / jacob-kaplan-moss, rest, django, python


The key thing to remember is that REST is about building software that scales to usage on the World Wide Web by being a good participant of the Web ecosystem. Ideally a RESTful API should be designed to be implementable by thousands of websites and consumed by hundreds of applications running on dozens of platforms with zero coupling between the client applications and the Web services.

Dare Obasanjo

# 24th October 2008, 1:39 pm / dare-obasanjo, rest, web-services

Magnificent Seven—the value of Atom. The seven core things that Atom solves so that you don’t have to.

# 19th October 2008, 10:24 pm / atom, xml, rest, bill-de-hora

Bloom Filter Resources. A continuation of the discussion about how to transfer information about a large number of recently updated resources around in an efficient way, Joe provides working code illustrating a simple approach using bloom filters.

# 19th October 2008, 10:22 pm / rest, joe-gregorio, bloom-filters, hashing

Versioning REST Web Services. Peter Williams suggests using a vendor MIME media type in the Accept header to specify a required API version, because embedding the API version in the URL itself leads to a single resource ending up with many different URLs, one for each API version.

# 13th October 2008, 12:45 pm / rest, urls, peter-williams, versioning, contentnegotiation, accept, http

RestView—a class for creating a view that dispatches based on request.method (via) I finally got around to writing up a simple approach I’ve been using for REST-style view functions in Django that dispatch based on request.method.

# 21st September 2008, 8:47 pm / restview, django, python, rest, restful, views, django-snippets

Dare left something out (and it’s important). Dave Winer: “You should at least learn the lessons and add to REST what it needs to catch up with XML-RPC. Seriously. What’s missing in REST, btw, is a standard method of serializing structs, lists and scalar types.” That would be JSON.

# 18th August 2008, 9:39 am / json, dave-winer, rest, xmlrpc, dare-obasanjo

Explaining REST to Damien Katz. I didn’t know that it was Mark Baker back in 2002 who first pointed out that SOAP was flawed because it ignored the architecture of the Web as defined by Roy Fielding’s Ph.D thesis.

# 17th August 2008, 11:19 pm / mark-baker, rest, soap, dare-obasanjo, royfielding, history, damien-katz

REST, I just don’t get it. Read the comments for some excellent practical reasons to care about REST, including cache management (PUT and DELETE can expire the cache entries for the corresponding GET), the ability to add or move parts of the server API without redeploying client libraries and the idempotency of GET / PUT / DELETE and HEAD (repeated POST operations may have side-effects).

# 15th August 2008, 8:20 am / rest, damien-katz, post, get, put, delete, caching, idempotency

If it's easy to make all your calls conform to the RESTful verb architecture, then that's good, I guess. But if not, then just use a POST as an RPC call, keep it as simple as possible and be done with it. And don't spend another minute worrying about being RESTful or not.

Damien Katz

# 15th August 2008, 8:07 am / restful, rest, damien-katz, http, web-services, post, rpc

What is it like to write a technical book? Plenty of food for thought from the lead author of the new edition of High Performance MySQL. It’s amazing how Word is still an integral part of most technical book projects despite its obvious inadequacies compared to a toolchain based on plain text files and Subversion (the Django Book used ReST and Subversion to great effect).

# 20th June 2008, 8:18 am / writing, word, subversion, django, rest, plaintext, baron-schwartz

Persevere adds Comet Support. Persevere sounds neat: a RESTful HTTP/JSON data store (the interface reminds me of CouchDB) which recently gained the ability to “subscribe” to a resource and receive notifications of updates via comet.

# 13th May 2008, 8:09 am / persevere, comet, javascript, json, rest, restful, couchdb

Multi-Inflection-Point Alert. Dammit, Tim, stop giving away our competitive advantages!

# 26th April 2008, 6:48 pm / tim-bray, couchdb, simpledb, bigtable, rest, soap, python, java, rails

I've never heard anyone from the REST camp claim that building distributed systems was "easy". [...] The WS-* folks have historically been obsessed with making things easy, usually for an imaginary business analyst who is nowhere near as technically adept as they. The REST folks, on the other hand, seem much more interested in keeping the entire stack simple, and for everyone involved.

Ryan Tomayko

# 13th January 2008, 11:34 pm / simplicity, rest, ws-star, web-services, ryan-tomayko


A Taxonomy of Event- and REST-based Comet. Kris Zyp describes a conceptual model for Comet messages based on REST semantics (so you can send a PUT referencing a specific URI down to a client to represent an idempotent state change).

# 21st November 2007, 8:18 pm / idempotent, put, http, rest, kriszyp, javascript, comet

[Release] CouchDB 0.7.0. This is a huge milestone for the project—it’s the first official release to include the JSON REST API instead of XML, and it’s also the first release that is “intended for widespread use”.

# 17th November 2007, 12:25 am / couchdb, releases, json, rest, xml, jan-lehnardt

REST plays the same role as open source and open APIs: It eliminates tooling and vendoring as artificial barriers to adoption.

Assaf Arkin

# 10th September 2007, 10:58 am / assafarkin, rest

The Python docs have been redesigned for 2.6. They’re beautiful. The docs for a module are on a single page now (rather than splitting over multiple pages), they’ve added unobtrusive permalinks to individual sections and the whole thing is built on ReST rather than LaTeX.

# 18th August 2007, 12:39 pm / rest, latex, documentation, python

Wesabi: Your bank has a REST API now. Excellent—I’ve been saying for a while now that I’d really love to be able to program my bank account.

# 12th July 2007, 5:20 pm / banking, wesabi, rest, api

WS-* is North Korea and REST is South Korea. While REST will go on to become an economic powerhouse with steadily increasing standards of living for all its citizens, WS-* is doomed to sixty years of starvation, poverty, tyranny, and defections until it eventually collapses from its own fundamental inadequacies and is absorbed into the more sensible policies of its neighbor to the South.

Elliotte Rusty Harold

# 7th July 2007, 9:40 am / rest, web-services, ws-star, korea, northkorea, southkorea, elliotte-rusty-harold

RESTify DayTrader. Killer REST case study from Joe Gregorio.

# 21st June 2007, 1:44 pm / rest, joe-gregorio, daytrader

People don't recognize how important URIs are. The notion that you have a huge, world-scale, information space, and that everything in it has an name and they're all just short strings that you can paint on the side of a bus; that's a new thing and a good thing.

Tim Bray

# 2nd May 2007, 8:23 pm / tim-bray, rest, urls, uris