Diagram
An activity diagram to describe the resolution of HTTP response status codes, given various headers.
The diagram is available in various formats:
- http-headers-status.gif (205 kb)
- http-headers-status.jpg (340 kb)
- http-headers-status.png (447 kb)
- http-headers-status.svg (315 kb) please see request for assistance below
- The Visio diagram, published on Google Code
Request for assistance
- Back in February I received a request to publish the diagram in Scalable Vector Graphics (SVG) format. As the diagram is edited in Microsoft Visio, this was a relatively easy request to meet (although I had to fix-up the xlink namespace for it to work with Firefox).
- Since then, I have received further requests for a better version of http-headers-status.svg. In pursuit of meeting that goal, I have tried a host of converters and editors without success:
- vdxtosvg
- Inkscape
- <oxygen/>
- media-convert.com
- ... and some others I can't recall
- If you are able to assist, please contact me. I would be most grateful.
12th March 2008
Yesterday this diagram was 'reditted' (if there is such a term) and decided that it was time to update the diagram with a number of revisions that have been building up over the last year:
Document Format
Historically, I have used the standard .vsd format for editing the diagram, but I have had a request to use the XML variant instead and I am happy to oblige. So now the editing diagram will be in .vdx format.
Coordinate Matrix
I have put in a coordinate matrix to make finding a particular diagram item easier:
- To reference a decision icon, use the form {version}:{column}{row} for example v2:B1
- To reference a decision arrow, use the form {version}:{column}{row},{true|false} for example v2:B1,false
- To reference a decision endpoint, use the form {version}:{column}{row},{true|false}= for example v2:B1,false= with an optional text label for readability, e.g. v2:B1,false="503 Service Unavailable"
414 Request URI Too Long
Moved v1:B3 to v2:B2 as it makes sense to validate the HTTP Request-Line first, and then assess if the request as a whole is malformed.
Last-Modified > If-Modified-Since?
Resolved logic error. Swapped true / false arrows exiting v2:G13 (if the resource has a last modification date before or equal to the If-Modified-Since value, then 304 Unmodified should be returned).
Extended DELETE response decisions
I have extended the decision tree following DELETE {todo:location} to cater for the 202 Accepted (but not yet enacted) response and if the response contains an entity.
Superfluous HTTP-Method check
Removed superfluous decision icon at v1:E3 (already checked by v2:B7).
Extended POST decision tree
Due to feedback, I have shown the decision tree that if a POST creates a resource with no URI then 200 or 204 are returned (this has caused a fairly significant change in the layout of the diagram).
14th March 2007
- Reworked resolution of 201 Created from a POST on a missing resource, to check that the Content-Type is supported and that 303 See Other is always checked.
- Tim Fletcher pointed out a typo where "Acceptable encoding available" should have been "Acceptable charset available": fixed
30th January 2007
- Added resolution of the following status codes prior to testing resource existence:
- Added resolution of the following status codes when a resource does not exist:
- Added resolution of the following status codes when a POST or PUT is carried out on an existing resource:
- Added resolution of the following status codes when a POST is carried out on an existing resource:
- Added resolution of the following status codes when a PUT is carried out on an existing resource:
- Added resolution of the following status codes when a GET or HEAD is carried out on an existing resource:
23rd January 2007
Original version uploaded to flickr.