mark nottingham

Web Services

Five Reasons to Considering Linking in Your HTTP APIs

Sunday, 23 June 2013

There’s been a lot of interest in and effort expended upon “hypermedia APIs” recently. However, I see a fair amount of resistance to it from developers and ops folks, because the pragmatic benefits aren’t often clear. This is as it should be, IMO; if you’re not able to describe concrete benefits without hand-waving about the “massive scale of the Web.”

this entry’s page

Indicating Problems in HTTP APIs

Wednesday, 15 May 2013

A common part of HTTP-based APIs is telling the client that something has gone wrong. Most APIs do this in some fashion, whether they call it a “Fault” (very SOAP-y), “Error” or whatever.

this entry’s page

Evolving HTTP APIs

Tuesday, 4 December 2012

One of the most vexing problems that still seems to be facing people when I talk to them about HTTP APIs is how to handle versioning and extensibility – i.e., how they evolve.

this entry’s page

Your REST worries have ended.

Tuesday, 22 March 2011

Now, you can test any URL to instantly determine if it’s RESTful.

this entry’s page

WS-REST (heh, heh)

Friday, 15 January 2010

If you haven’t seen it already, check out the Call for Papers for the First International Workshop on RESTful Design (WS-REST 2010), where I’m on the program committee, along with many of the usual suspects.

this entry’s page

Dev-Friendly Web Caching

Monday, 27 October 2008

Ryan Tomayko announces Rack::Cache, a HTTP cache for Ruby’s generic Web API;

this entry’s page


Thursday, 16 October 2008

Metadata discovery is a nagging problem that’s been hanging around the Web for a while. There have been a few stabs at this problem (including at least one by yours truly), but no real progress.

this entry’s page

The WS-Empire Strikes Back... feebly

Friday, 4 July 2008

Here’s a gem on a little-used mailing list:

this entry’s page

Atom gets a new audience

Thursday, 15 May 2008

Huh. The Atom Format RFC has been out for a while, and as one of the authors, I get the odd mail now and again asking a question or just saying “thanks.”

this entry’s page

Moving Beyond Methods in REST

Thursday, 20 March 2008

Having complained before about the sad state of HTTP APIs, I’m somewhat happy to say that people seem to be getting it, producing more capable server-side and client-side tools for exposing the full range of the protocol; some frameworks are even starting to align object models with resource models, where HTTP methods map to method calls on things with identity. Good stuff.

this entry’s page


Monday, 3 March 2008

Not many people that I know outside of IETF circles realise that a new *DAV effort has started up; CardDAV.

this entry’s page


Sunday, 17 February 2008

It’s 7am, I’m sitting in the Auckland Koru Club on my way home and reading the minor kerfuffle regarding PATCH with interest.

this entry’s page

Another Kind of HTTP Negotiation

Wednesday, 6 February 2008

Here’s one that I’ve been wondering about for a while, for the LazyWeb (HTTP Geek Edition);

this entry’s page

Watching WADL (and other rambling thoughts)

Monday, 21 January 2008

I’m following the discussion of RESTful Web description in general, and WADL in particular, with both difficulty and interest (see Patrick and Joe’s thoughts for a nice contrast).

this entry’s page

Cache Channels

Friday, 4 January 2008

The stale-while-revalidate and stale-if-error extensions aren’t the only fiddling we’ve been doing with the HTTP caching model. Now that Squid 2.7 is starting to see daylight, I can explain about a much more ambitious project — Cache Channels.

this entry’s page

Two HTTP Caching Extensions

Wednesday, 12 December 2007

We use caching extensively inside Yahoo! to improve scalability, latency and availability for back-end HTTP services, as I’ve discussed before.

this entry’s page

Why Revise HTTP?

Sunday, 9 December 2007

I haven’t talked about it here much, but I’ve spent a fair amount of time over the last year and a half working with people in the IETF to get RFC2616 — the HTTP specification — revised.

this entry’s page

WADL Documentation XSLT Updated

Friday, 2 November 2007

I’ve updated the WADL documentation stylesheet, primarily to;

this entry’s page


Saturday, 8 September 2007

Feed Paging and Archiving (nee Feed History) has finally made it to a standards-track RFC.

this entry’s page

ETags, ETags, ETags

Tuesday, 7 August 2007

I’ve been hoping to avoid this, but ETags seem to be popping up more and more often recently. For whatever reason, people latch onto them as a litmus test for RESTfulness, as the defining factor of HTTP’s caching model, and much more.

this entry’s page

URI Templates Redux

Saturday, 28 July 2007

URI Templates -01 is now an Internet-Draft.

this entry’s page

The State of Proxy Caching

Wednesday, 20 June 2007

A while back I wrote up the state of browser caching, after writing a quick-and-dirty XHR-based test page, with the idea that if people know how their content is handled by common implementations, they’d be able to trust caches a bit more.

this entry’s page

httperf rev

Tuesday, 1 May 2007

Martin Arlitt makes an exciting announcement;

this entry’s page

Squid is My Service Bus

Sunday, 29 April 2007

The QCon presentation ( slides) was ostensibly about how we use HTTP for services within Yahoo’s Media Group. When I started thinking about the talk, however, I quickly concluded that everyone’s heard enough about the high-level benefits of HTTP and not nearly enough details of what it does on the ground. So, I decided to concentrate on one aspect of the value that we get from using HTTP for services; intermediation, as an example.

this entry’s page

WWW2007 Developers’ Track

Thursday, 5 April 2007

We’ve announced the program for this years’ Developers’ Track, and I’m very excited about the lineup.

this entry’s page

REST Issues, Real and Imagined

Tuesday, 27 February 2007

I think that most of the debate about REST focuses on the wrong things, leading developers down the garden path at the expense of their productivity and the success of their projects. Time and time again, I’ve seen folks who are new to REST get caught up on small stuff like this;

this entry’s page


Wednesday, 7 February 2007

Yahoo! (finally!) released Pipes as a beta today; congrats to the very talented team that put this together.

this entry’s page

SOA Jumps Shark

Monday, 4 December 2006

Uche calls it;

this entry’s page

Schema for JSON

Thursday, 30 November 2006

One of the perceived deficiencies of JSON is that it doesn’t have a schema language. I say “perceived” because the problems that a schema language brings often outweigh the benefits; after all, look at the mess that XML Schema is in.

this entry’s page

Wanted: HTTP Yahoo!s

Tuesday, 17 October 2006

My team at Yahoo! is looking for a mid-level developer (5-10 years experience) to help build our HTTP/REST toolkit, among other things.

this entry’s page

Does the Enterprise (Vendor) Get the Web?

Friday, 13 October 2006

A couple of interesting things have happened recently; first, Jonathan Marsh has a new job;

this entry’s page

Some Questions for Software Vendors

Wednesday, 13 September 2006

Everyone seems to be gushing about Microsoft’s Open Specification Promise. While any headway is good in the horrible landscape that is Intellectual Property, my initial reaction is that it — like most such vendor promises — is too little, too late.

this entry’s page

Bringing Back the Link - With a Twist

Thursday, 22 June 2006

Recently, there’s been a resurgence for the Link element in HTML; everything from Microformats to Atom autodiscovery is using it. This isn’t surprising; as machines start processing Web documents more, it’s necessary to use hyperlinks — the foundation of the Web — to tie resources together, without getting in users’ faces.

this entry’s page

Web Services are Dead, Long Live Web Services

Thursday, 25 May 2006

When I joined Yahoo, one of the biggest adjustments I had to make was to their use of “Web Services”. There, that phrase means any kind of machine-to-machine communication using HTTP; SOAP isn’t assumed (or preferred).

this entry’s page

Caching Web 2.0

Tuesday, 16 May 2006

I just finished my XTech presentation, “ Web 2.0 on Speed”. here are the slides [pdf]; I’m going to try to s5 them soon. There isn’t much new in this talk; it’s just a synthesis of a few different observations;

this entry’s page

Yaron Uncloaks!

Thursday, 11 May 2006

Yaron publicly says what he’s doing at Microsoft (scroll down);

this entry’s page


Wednesday, 10 May 2006

Anne-Thomas Manes extolls the virtues of WS-*;

this entry’s page


Sunday, 23 April 2006

It’s official; I’ve got a last-minute slot at XTech, talking about all things Web caching.

this entry’s page

Another WS-*

Friday, 14 April 2006

A friend in the trenches put me on to the funniest thing I’ve seen in a long time.

this entry’s page

Are Namespaces (and mU) Necessary?

Friday, 7 April 2006

It’s become axiomatic in some circles — especially in WS-* land, as well as in many other uses of XML — that the preferred (or only) means of offering extensibility is through URI-based namespaces, along with a flag to tell consumers when an extension needs to be understood (a.k.a. mustUnderstand).

this entry’s page

What good is SOAP to HTTP?

Thursday, 6 April 2006

I’m a little confused by Mark Baker’s stance regarding SOAP; he seems to encourage the Web services world to use SOAP on top of HTTP in a fashion compatible with HTTP.

this entry’s page

Don’s False Choice

Monday, 20 March 2006

True to form, Don’s using his witty charm and good looks (such as they are ;) to shape discussion of a topic… in this case, REST, where he splits the RESTifarian world into two; “hi” and “lo.”

this entry’s page

WS-Transfer, WAKA and the Web

Wednesday, 15 March 2006

Microsoft and friends (of the keep your enemy closer variety, I suspect) have submitted WS-Transfer to the W3C. I found the Team comment interesting; e.g.,

this entry’s page

How Web-Ready is XMLHttpRequest?

Monday, 23 January 2006

I’ve been playing around with some ideas that use XMLHttpRequest recently, but I keep on bumping up against implementation inconsistencies on IE vs. Safari vs. Opera vs. Mozilla. Although the interface exposed is pretty much the same, what it does in the background is very different, especially with regards to HTTP.

this entry’s page

REST vs..?

Monday, 7 November 2005

More and more people are getting turned on to the advantages of using REST as a higher-level abstraction for networked applications, often comparing it favourably to SOAP and Web services.

this entry’s page

Separating the Data Model from its Serialisation

Wednesday, 10 August 2005

For some time, I’ve noticed that people defining XML formats spend an inordinate amount of time talking about the structure of the format. This is especially apparent in standards working groups, where hours — no, days — can be spent agonizing over whether to make something an attribute or an element.

this entry’s page

HTTP Performance (again)

Monday, 8 August 2005

Some folks at IONA have written a paper entitled Where HTTP Fails SOAP. I had a chance to look at this before I got it published, and their conclusions make a lot of sense — if you accept the premise that SOAP (and Web services) is about integration with existing applications.

this entry’s page

One Description to Bind them All? Nah.

Friday, 8 July 2005

You can describe just about anything with sufficient precision in plain English, given enough words. In practice, this doesn’t happen; specialised fields — whether science, finance or art — develop specialised jargon as a shorthand for concepts that are well-understood in that field. It gives greater precision, easier flow of ideas, and yes, it raises the bar to entry for newcomers.

this entry’s page

Perspectives on the Addressing Experiment

Monday, 27 June 2005

I don’t talk much about it here, but I’m honoured to be the Chair of the W3C Web Services Addressing Working Group. This is something of an experiment for the W3C, so I gave an update on its progress as part of a panel discussion at the Advisory Committee meeting a few weeks ago. I’d like to share some of what I presented there.

this entry’s page

Web Description at the W3C

Tuesday, 24 May 2005

The W3C has just started a mailing list for discussion of Web description formats;

this entry’s page

Using XML in Data-Oriented Applications

Wednesday, 2 March 2005

So, you’ve got some data that you need to give to somebody else, and you want to use XML to do it; good for you, you’ve seen the light / hopped on the bandwagon / drunk the Kool-Aid.

this entry’s page

The Map is Not the Territory

Monday, 7 February 2005

Werner makes an excellent point;

this entry’s page

WS-Who's on First?

Sunday, 23 January 2005

There are MEPs in SOAP and MEPs in WSDL; both describe patterns of messages, but at potentially different layers.

this entry’s page


Wednesday, 5 January 2005

Since the W3C Web Services Addressing Working Group is visiting my (sort of) home town in a couple of weeks, I’ve updated the Opinionated Guide to Melbourne that I sometimes give to people by e-mail and put it on the Web.

this entry’s page

Why POST is Special

Sunday, 10 October 2004

In a recent post, Don gave his take on the enlightening nature of WS-Transfer;

this entry’s page

Is there a Web Services Architecture?

Wednesday, 29 September 2004

As I’m sure many others were, I was intrigued to see that Microsoft published their idea of an Introduction to the Web Services Architecture and Its Specifications the other week.

this entry’s page

The ‘Web’ in Web Services

Monday, 27 September 2004

I was very interested to see the reaction to WS-Transfer [PDF] over the last few days. While the SOAP Resource Representation Header had opprobrium heaped upon it (see previous discussion), Transfer passed by with nothing more than a few nodding heads and people saying “aha.”

this entry’s page

The ‘Document’ in Document-Oriented Messaging

Thursday, 5 August 2004

(Another instalment in “XML Heresies.”)

this entry’s page

Come One, Come All

Thursday, 1 July 2004

The W3C Workshop on Constraints and Capabilities for Web Services promises to be a quiet, calm, tightly-scoped discussion of a well-understood topic, lacking any controversy whatsoever.

this entry’s page

SOAP: Protocol or Format?

Wednesday, 30 June 2004

Way back when the XML Protocol Working Group started kicking around, Henrik and I had a long-running, low-level “discusssion” about whether SOAP was a protocol or a format.

this entry’s page

Use Cases for Web Description Formats

Monday, 14 June 2004

One thing about Web description formats that hasn’t seen much discussion yet is how people intend to use them.

this entry’s page 0.2

Friday, 7 May 2004

To help inform discussion of XOP (and to save Sam the trouble ;), I’ve put together a quick-and-dirty (we’re talking two hours) XOP parser in Python. It isn’t particularly efficient, nor is it well-tested or robust; it’s only to demonstrate how a XOP parser might behave.

this entry’s page

Using WebDAV as a Description Format for REST

Tuesday, 27 April 2004

In the past, I’ve talked about reusing WSDL as a format for describing Web resources, as well as coming up with a bespoke format.

this entry’s page

How do we use SOAP Headers?

Tuesday, 27 April 2004

Way back when in the XML Protocol Working Group, one of the concerns that came up was the processing model for SOAP headers. In particular, while SOAP 1.2 does a good job of specifying how that model operates, a key peice of information is missing; how to order the steps in processing a message.

this entry’s page

Sean’s Words of Wisdom

Tuesday, 20 April 2004

Sean McGrath always has carefully considered positions, and he hits it out of the ballpark with this one. A few thoughts;

this entry’s page

Asynchrony: There Is No Spoon

Monday, 19 April 2004

One of the things that people find compelling about Web services is its promise of asynchrony. “HTTP is only request/response, and therefore synchronous; it’s terrible for long-lived business processes, where the server needs to contact the client at some arbitrary time in the future” they say.

this entry’s page

Describing Generative Identifiers in WSDL

Friday, 16 April 2004

To use WSDL to describe RESTful interactions, you need some way of accommodating generative resource identifiers. In a nutshell, this means some part of the URI is dynamic. For example, with HTTP I might describe an address book where someone named “Jones” has a corresponding entry URI;

this entry’s page

A(nother) Description Format for REST

Wednesday, 14 April 2004

I’ve talked before about describing RESTful Web resources, going as far as prototyping a new format. That work was predicated on the assumption that WSDL wasn’t adequate.

this entry’s page

Behind the Scenes at Your (very) Local Music Store

Monday, 29 March 2004

Aaron Swartz has started to document the iTunes Music Store; this is a good example of a non-browser, cross-platform application reusing HTTP. It would be interesting to see the interface documented on a per-URI basis.

this entry’s page


Saturday, 14 February 2004

The XML Protocol Working Group (of which I’m a member) has released a first draft of XOP, XML-binary Optimised Packaging, and a revised draft of MTOM, the Message Transmission Optimisation Mechanism, that leverages XOP.

this entry’s page

DIME is dead.

Thursday, 30 October 2003

‘cause Gudge says so, and as we all know, Gudge is always right.

this entry’s page

Web Services

Monday, 18 August 2003

If you’re lost in a sea of specs, pundits and opinions, might I suggest two very well-written, thoughtful papers:

this entry’s page


Tuesday, 24 June 2003

We finally did it. More than two years ago, I went to North Carolina almost by accident; at the last minute I asked David Fallside if I could come to the first meeting because it sounded “interesting.”

this entry’s page