Just like the response codes, many decisions made for this map came from RFC2616, Fielding's dissertation, and analysis of several dozen RESTful or REST "like" APIs currently on the programmable web.
Request Headers
- Accept : type/subtype
- Example - Accept : application/xml (Available types and sub types: application/xml, application/json)
- Notes - Defaults to application/xml if one is not passed in, and when a user sends application/* the resulting content sub type will be XML. Multiple types/sub types can be sent in but as per the specification the first match in degree of specificity will be the first used.
i.e. if user sends in: application/*, application/xml, */* the order would be as follows:
1) application/xml
2) application/*
3) */* - If an invalid value is passed in via Accept header the response will result in a 415 Unsupported Media Type
- Accept-Charset : charset
- Example - Accept-Charset: utf-8
- Notes - Accept-Charset will not be used and will always default to utf-8
- Accept-Encoding : encoding
- Example - Accept-Encoding : deflate, compress, gzip
- Notes - If none is sent in then the API will default to no compression.
If an invalid value is passed in via Accept-Encoding header the response will result in a 406 Not acceptable - Authorization : credentials
- Example - Authorization : Oauth realm=http://api.f1.com
- Notes - This is where the OAUTH credentials will go
- Date : HTTP-date
- Example - Date: Thu, 29 Jan 2009 15:28:25 GMT
- Notes - Optional, most commonly passed in with PUTs and POSTs
- User-Agent : product/comment
- Example - User-Agent : MyChurchSite/v123.x
- Notes - Used to identify the HTTP library or client library that was used to consume the API
Response Headers
- Allow : method
- Example - Allow: GET, HEAD, PUT
- Notes - An Allow header field MUST be present in a 405 (Method Not Allowed) response.
- Content-Encoding : content-coding
- Example - Content-Encoding : gzip
- Notes - This will tell the client what type of compression was used on the resource
- Content-Length : DIGIT
- Example - Content-Length : 1254
- Notes - Sent back with each request. Will possibly be available via HEAD requests
- Content-Location : absoluteURI | relativeURI
- Example - Content-Location : http://api.f1.com/API/People/22114944
- Notes - Sent back with each GET request
- Content-Type : media-type
- Example - Content-Type : application/xml, utf-8
- Notes - Details the type of content being returned to the client
- Date : HTTP-date
- Example - Date: Thu, 29 Jan 2009 15:28:25 GMT
- Notes - Will be returned with every response, possibly excluding responses returning status codes of 500
- Location : absoluteURI
- Example - Location: http://api.f1.com/API/People/22114944
- Notes - Applies to 201 and 301 only
- WWW-Authenticate : challenge
- Example - WWW-Authenticate : Oauth realm: http://api.f1.com
- Notes - The URI will change per environment, per version
All headers having to do with caching are still being implemented.
This HTTP header map is subject to change, however, in the current build of the API these rules exist as defined.
No comments:
Post a Comment