HTTP 204 - the forgotten status
I'm speaking here about the 204 status code.
Quoting the W3
204 No Content
The server has fulfilled the request but does not need to return an entity-body, and might want to return updated metainformation. The response MAY include new or updated metainformation in the form of entity-headers, which if present SHOULD be associated with the requested variant.
If the client is a user agent, it SHOULD NOT change its document view from that which caused the request to be sent. This response is primarily intended to allow input for actions to take place without causing a change to the user agent's active document view, although any new or updated metainformation SHOULD be applied to the document currently in the user agent's active view.
The 204 response MUST NOT include a message-body, and thus is always terminated by the first empty line after the header fields.
For doing simple updates, a 204 works beautifully. Pass some parameters, save some values, but leave the user right where they are. This is great for online forms where you want to save values as they get typed / changed but don't need to return anything back to the user.
One quick warning, though. PHP is notorious for not presenting proper 204's, so if you code in PHP, you'll want to hand code the entire response.
Now that you understand what it is, why would it get used?
Let's say for a minute, that you have a form that has 30 - 40 checkboxes (like for a permissions based admin section of a site) and want to turn them on and off. You don't really need to give any feedback that the permission has been added / removed, you just need to save the value.
Well, the easy answer (if you ask me) is to use a bit of javascript to request a location (document.location=_____) with some parameters for this.value and the username. When it gets requested, if it works a 204 can be returned, if not a page with an error message can be shown instead.
Or let's say you've got a whole list of options set up via radio buttons and want to enable people to answer a survey and come back later to finish. As each option gets changed, a quick request with a 204 return code could save the answer, then the response is saved for when they come back.
I haven't seen too many places utilize this type of a system, but we use it quite a bit. The real benefits are less overload on the client side, but also once the request is made, you don't have to wait for a response before the next request is made. Ajax can be slow processing a bunch of requests at times (they normally run sequentially, not in parallel), but by not using Ajax and calling a script that returns a 204, they can all be running at once if needed.
There are other status codes that don't get used too often. The full list can be found here.
Comments