Index

A note on the digital index

A link in an index entry is displayed as the section title in which that entry appears. Because some sections have multiple index markers, it is not unusual for an entry to have several links to the same section. Clicking on any link will take you directly to the place in the text in which the marker appears.

Symbols

, (commas)
scoping information, No Hierarchy? Use Commas or SemicolonsScale
URI design and, URI Design
/ (forward slash)
Django “house style” and, Define Resources and Give Them URIs
using XPath, using, Web Services Are Web Sites
// XPath expressions, Method Information
; (semicolons) scoping information, No Hierarchy? Use Commas or SemicolonsScale
[ ] (square brackets), using XPath, Web Services Are Web Sites
100 “Continue” response code, 100 (“Continue”)
101 “Switching Protocols” response code, 101 (“Switching Protocols”)
200 “OK” response code, HTTP Response Codes, What’s Supposed to Happen?, What Might Go Wrong?, 200 (“OK”)
database-backed control flow, PUT
modifying resources, What’s Supposed to Happen?
201 “Created” response code, 201 (“Created”)
creating resources, What’s Supposed to Happen?
database-backed control flow, PUT
202 “Accepted” response code, Asynchronous Operations, 202 (“Accepted”)
203 “Non-Authoritative Information” response code, 203 (“Non-Authoritative Information”)
204 “No Content” response code, 204 (“No Content”)
206 “Partial Content” response code, 206 (“Partial Content”)
207 “Multi-Status” response code, 207 (“Multi-Status”)
300 “Multiple Choices” response code, 300 (“Multiple Choices”)
301 “Moved Permanently” response code, PUT, Three to Seven Status Codes: The Bare Minimum, 301 (“Moved Permanently”)
302 “Found” response code, 302 (“Found”)
303 “See Other” response code, What Might Go Wrong?, 303 (“See Other”)
304 “Not Modified” response code, Conditional GET, 304 (“Not Modified”)
305 “Use Proxy” response code, 305 (“Use Proxy”)
306 “Unused” response code, 306: Unused
307 “Temporary Redirect” response code, 307 (“Temporary Redirect”)
400 “Bad Request” response code, What Might Go Wrong?, 400 (“Bad Request”)
database-backed control flow, Database-Backed Control Flow
restrictions and, What Might Go Wrong?
401 “Unauthorized” response code, What Might Go Wrong?, What Might Go Wrong?, Basic authentication, 401 (“Unauthorized”)
402 “Payment Required” response code, 402 (“Payment Required”)
403 “Forbidden” response code, 403 (“Forbidden”)
404 “Not Found” response code, HTTP Response Codes, What Might Go Wrong?, What Might Go Wrong?, Three to Seven Status Codes: The Bare Minimum, 404 (“Not Found”)
database-backed control flow, PUT
405 “Method Not Allowed” response code, POST Once Exactly, 405 (“Method Not Allowed”)
406 “Not Acceptable” response code, 406 (“Not Acceptable”)
407 “Proxy Authentication Required” response code, 407 (“Proxy Authentication Required”)
408 “Request Timeout” response code, 408 (“Request Timeout”)
409 “Conflict” response code, What Might Go Wrong?, Three to Seven Status Codes: The Bare Minimum, 409 (“Conflict”)
database-backed control flow, PUT
unauthorized access and, What Might Go Wrong?
410 “Gone” response code, PUT, Three to Seven Status Codes: The Bare Minimum, 410 (“Gone”)
411 “Length Required” response code, 411 (“Length Required”)
412 “Precondition Failed” response code, 412 (“Precondition Failed”)
413 “Request Entity Too Large” response code, 413 (“Request Entity Too Large”)
414 “Request-URI Too Long” response code, 414 (“Request-URI Too Long”)
415 “Unsupported Media Type” response code, What Might Go Wrong?, What Might Go Wrong?, 415 (“Unsupported Media Type”)
database-backed control flow, Database-Backed Control Flow
416 “Requested Range Not Satisfiable” response code, 416 (“Requested Range Not Satisfiable”)
417 “Expectation Failed” response code, 417 (“Expectation Failed”)
500 “Internal Server Error” response code, HTTP Response Codes, What Might Go Wrong?, What Might Go Wrong?, Three to Seven Status Codes: The Bare Minimum, 500 (“Internal Server Error”)
501 “Not Implemented” response code, 501 (“Not Implemented”)
502 “Bad Gateway” response code, 502 (“Bad Gateway”)
503 “Service Unavailable” response code, What Might Go Wrong?, What Might Go Wrong?, 503 (“Service Unavailable”)
504 “Gateway Timeout” response code, 504 (“Gateway Timeout”)
505 “HTTP Version Not Supported” response code, 505 (“HTTP Version Not Supported”)
“Abusing Amazon Images” (Gertler, Nat), Designing Read-Only Resource-Oriented Services
“Universal Resource Identifiers-Axioms of Web Architecture” (Berners-Lee, Tim), URIs

A

Accept request header, Accept
Accept-Charset request header, Accept-Charset
Accept-Encoding request header, Optional Features, Accept-Encoding
compression algorithms and, Compression
Accept-Language request header, Deciding Between Representations, Accept-Language
Accept-Ranges request header, Accept-Ranges
“Accepted” 202 response code, Asynchronous Operations, 202 (“Accepted”)
access control, Request Signing and Access ControlSetting Access Policy
“Access Key ID” (Amazon), An S3 Client
access policies, Setting Access Policy
ActionScript, Other Languages, From AJAX to Ajax
XML parsers and, Other Languages
ActiveRecord, Design the Representation(s) Accepted from the Client, Design the Representation(s) Accepted from the Client
ActiveResource, Wrappers, WADL, and ActiveResource
clients, making transparent with, Clients Made Transparent with ActiveResourceParting Words
acts_as_taggable plugin, A Social Bookmarking Web Service, Model Code
ad hoc XHTML, Ad Hoc XHTML
addressability of URIs, AddressabilityAddressability, Addressability, Why Addressability Matters
Age request header, Age
Ajax, Addressability
advantages/disadvantages, The Advantages of Ajax
architecture, The Ajax Architecture
cross-browser issues and, Cross-Browser Issues and Ajax Libraries
request proxying, Request Proxying
requests, Making the Request
responses, handling, Handling the Response
REST clients, as, Ajax Applications as REST Clients
AllegroServe web server library (Lisp), Other Languages
Allow request header, Allow
Amazon Web Services, The Programmable Web and Its Inhabitants, Introducing the Simple Storage Service
addressablity, Addressability
S3, RESTful, Resource-Oriented Architectures, Resources
client library, using, Using the S3 Client Library
wrappers, Wrappers, WADL, and ActiveResource
Apache Tomcat, Restlet
API keys, User Accounts as Resources
APP (Atom Publishing Protocol), RESTful, Resource-Oriented Architectures, Introducing the Simple Storage Service, The Atom Publishing ProtocolSummary
collections, describing, Describing an APP collection
application forms, Hypermedia Technologies
application state, Application State Versus Resource State, State and Statelessness
application/atom+xml media types, Atom
application/json media type, JSON
application/x-www-form-urlencoded media type, Form-Encoded Key-Value Pairs
application/xhtml+xml media type, XHTML
application/xml media type, Framework-Specific Serialization Formats, Other XML Standards and Ad Hoc Vocabularies
applications and web interfaces, Applications with a Web InterfaceApplications with No Web Interface
applicaton/xhtml+xml
ad hoc XHTML, Ad Hoc XHTML
Architecture of the World Wide Web, What’s a Resource?
Asynchronous JavaScript And XML (see Ajax)
asynchronous operations, Asynchronous Operations
AsyncWeb, Restlet
Atom, A Social Bookmarking Web Service, Design the Representation(s) Served to the Client, AtomOpenSearch
“Atom Authentication” (Pilgrim, Mark), WSSE username token
atom-tools Ruby gem, A Social Bookmarking Web Service
“authenticated” messages, Link This Resource to Existing Resources
authenticated-read access policy, Setting Access Policy
authentication (HTTP), Authentication, Authorization, Privacy, and Trust
authorization and, Authentication and AuthorizationWSSE username token
authorization, Authentication, Authorization, Privacy, and TrustAuthentication, Authorization, Privacy, and Trust
authentication and, Authentication and Authorization
unauthorized access and, What Might Go Wrong?
Authorization request header, Optional Features, Basic authentication, Authorization
S3 and, Request Signing and Access Control
unauthorized access and, What Might Go Wrong?
WSSE HTTP authentication, WSSE username token
authorization token, Why Should a User Trust the HTTP Client?
AWS::S3, Introducing the Simple Storage Service, An S3 Client
Axioms of Web Architecture (Berners-Lee, Tim), Permanent URIs Versus Readable URIs

B

“Bad Gateway” 502 response code, 502 (“Bad Gateway”)
“Bad Request” 400 response code, What Might Go Wrong?, 400 (“Bad Request”)
database-backed control flow, Database-Backed Control Flow
restrictions and, What Might Go Wrong?
base 64 encoding, Basic authentication
Basic HTTP authentication, Optional Features, Authentication, Authorization, Privacy, and Trust, Basic authentication
batch operations, Batch Operations
Beautiful Soup XML parser, Python: ElementTree
Berners-Lee, Tim, URIs, Permanent URIs Versus Readable URIs
best practices for REST, REST and ROA Best PracticesWhat Problem Does this Solve?
Big Web Services, Kinds of Things on the Programmable Web, The Resource-Oriented Architecture Versus Big Web ServicesConclusion
binary documents, Binary documents as APP members
bookmarks, del.icio.us: The Sample Application
controllers for, The Bookmarks Controller
management for, Remodeling the REST Way
BPEL (Business Process Execution Language), BPEL, ESB, and SOA
browser issues, Cross-Browser Issues and Ajax Libraries
buckets, The Programmable Web and Its Inhabitants
access policies, Setting Access Policy
buckets (S3), Object-Oriented Design of S3
Builder::XmlMarkup (Ruby), The CalendarController
Bunardzic, Alex, Resource-Oriented What Now?
bundlers controller, The Bundles Controller
Business Process Execution Language (BPEL), BPEL, ESB, and SOA

C

C programming language, Other Languages
XML parsers and, Other Languages
C#, C#: System.Web.HTTPWebRequest
XML parsers and, C#: System.Xml.XmlReader
C++ programming language, Other Languages
XML parsers and, Other Languages
Cache-Control header, Please cache, Cache-Control
caching, CachingDefault caching rules
calendar controller, The Calendar Controller
__call__ method, The bookmark detail view
category documents (APP), Category documents
character encoding, Encoding Issues
class HTML attribute, XHTML
client-side errors, 4xx: Client-Side Error417 (“Expectation Failed”)
clients, Web Services Are Web SitesClients Made Easy with WADL
ActiveResource, making transparent with, Clients Made Transparent with ActiveResourceParting Words
Python, using for, A Python Client for the Simple Service
representations, Design the Representation(s) Accepted from the ClientDesign the Representation(s) Accepted from the Client, Design the Representation(s) Accepted from the ClientDesign the Representation(s) Served to the Client
S3, An S3 ClientThe S3 Object
library, using, Using the S3 Client Library
writing, Optional Features, Writing Restlet ClientsWriting Restlet Clients
CLR (Common Language Runtime), C#: System.Web.HTTPWebRequest, C#: System.Xml.XmlReader
collections (APP), Collections
commas (,)
scoping information, No Hierarchy? Use Commas or SemicolonsScale
URI design and, URI Design
Common Language Runtime (CLR), C#: System.Web.HTTPWebRequest, C#: System.Xml.XmlReader
Common Lisp, Other Languages
XML parsers, Other Languages
compression, Compression
conditional GET, Conditional HTTP GET, Conditional GET, Conditional GETConditional GET
caching and, Caching
“Conflict” 409 response code, What Might Go Wrong?, Three to Seven Status Codes: The Bare Minimum, 409 (“Conflict”)
database-backed control flow, PUT
unauthorized access and, What Might Go Wrong?
connectedness, Links and ConnectednessLinks and Connectedness, Connectedness, Why Connectedness Matters
service versioning, Service Versioning
Connection request header, Connection
content negotiation, Deciding Between Representations
Content-Encoding header, Compression, Content-Encoding
Content-Language request header, Content-Language
Content-Length request header, Content-Length
Content-Location header, Default caching rules, Content-Location
Content-MD5 request header, Content-MD5
Content-Range request header, Content-Range
Content-Type header, HTTP: Documents in Envelopes, Content-Type
compression algorithms and, Compression
encodings and, XML and HTTP: Battle of the encodings
HTTP response and, What’s Supposed to Happen?
outgoing representations and, Outgoing Representations
S3, The S3 Object
“Continue” 100 response code, 100 (“Continue”)
control flows (prepackaged), Prepackaged Control FlowsPOST Once Exactly
controllers, REST in Rails, The Bookmarks ControllerThe Bundles Controller, Resources, Controllers, and Views
code, Controller CodeThe UrisController
Cookie request header, Cookie
cookies, Statelessness, The Trouble with Cookies
CPAN
XML parsers and, Other Languages
“Created” 201 response code, 201 (“Created”)
creating resources, What’s Supposed to Happen?
database-backed control flow, PUT
cross-browser issues, Cross-Browser Issues and Ajax Libraries
Crypt:SSLeay module, Other Languages
CSS, Processing the Response: XML Parsers
curl, The Command Line: curl

D

data sets, Figure Out the Data SetGeneral Lessons, Figure Out the Data Set, Figure Out the Data Set, Figuring Out the Data SetFiguring Out the Data Set
resources, splitting into, Split the Data Set into Resources
databases, Figuring Out the Data Set, What’s Supposed to Happen?
ActiveRecord and, Design the Representation(s) Accepted from the Client
control flow and, Database-Backed Control FlowDELETE
Date request header, Date
DCMI (Dublin Core Metadata Initiative), RDF and RDFa
dd tag (HTML), Representing Planets and Other Places
Debian GNU/Linux, installing net/https library, Ruby: rest-open-uri and net/http
del.icio.us web service, del.icio.us: The Sample ApplicationWhat the Sample Clients Do
DELETE method, Method Information, Making the Request: HTTP Libraries, GET, PUT, and DELETE
ActiveResource clients and, An ActiveResource Client
APP resources and, Summary
caching and, Default caching rules
faking, Faking PUT and DELETE
S3, Resources
S3::Bucket#delete method, The Bucket
safety and idempotence, Safety and Idempotence
uniform interface and, The Uniform Interface
user controllers and, The User Controller
UsersController and, The UsersController
web applications and web services and, Web Applications as Web Services
DELETE statement (SQL), An ActiveResource Client
Digest HTTP authentication, Optional Features, Authentication, Authorization, Privacy, and Trust, Digest authenticationDigest authentication
Django (Python), A Service Implementation, Frameworks for RESTful Services, DjangoConclusion
implementing resources as views, Implement Resources as Django ViewsFurther directions
dl HTML tag, XHTML
document (entity-body), HTTP: Documents in Envelopes
document-based protocol, HTTP: Documents in Envelopes
Dojo, JSON Parsers: Handling Serialized Data, Dojo
DOM parsers, Processing the Response: XML Parsers
DOMIT! DOM parser (PHP), PHP
Dublin Core Metadata Initiative (DCMI), RDF and RDFa

E

ECMAScript standards, JSON Parsers: Handling Serialized Data
ElementTree (Python), Python: ElementTree
encoding issues, Encoding Issues
Enterprise Service Bus (ESB), BPEL, ESB, and SOA
entity-body, HTTP: Documents in Envelopes, Design the Representation(s) Accepted from the Client
batch operations and, Batch Operations
form-encoding and, Design the Representation(s) Accepted from the Client
HTTP libraries and, Making the Request: HTTP Libraries
Look-Before-You-Leap (LBYL) requests and, Look-Before-You-Leap Requests
PUT/DELETE, faking, Faking PUT and DELETE
scoping informations and, Scoping Information
XML documents and, What the Sample Clients Do, Processing the Response: XML Parsers
entries (Atom lists), Atom
EntriesController class, Routing
eRDF, RDF and RDFa
error (status codes)
client-side, 4xx: Client-Side Error417 (“Expectation Failed”)
server-side, 5xx: Server-Side Error
ESB (Enterprise Service Bus), BPEL, ESB, and SOA
ETag HTTP header, Optional Features, What’s Supposed to Happen?, ETag
conditional GET and, Conditional GET, Conditional GET
Expat XML parser, Other Languages
Expect request header, Expect
“Expectation Failed” 417 response code, 417 (“Expectation Failed”)
expiration dates, signing URIs, Signing a URI
Expires request header, Expires
Extensible Open XHTML Outlines (XOXO), XHTML with Microformats

F

federation, Security
feeds (Atom lists), Atom
Firefox, Authentication, Authorization, Privacy, and Trust
Flash, Other Languages
Flickr
API, Method Information, REST-RPC Hybrid Architectures
statelessness and, Application State Versus Resource State
user accounts and, User Accounts as Resources
FOAF, RDF and RDFa
“Forbidden” 403 response code, 403 (“Forbidden”)
form-encoding, Design the Representation(s) Accepted from the Client
key-value pairs, Other Languages, Form-Encoded Key-Value Pairs
forms (HTML)
encoded representation of user accounts, Design the Representation(s) Accepted from the Client
form-encoded key-value pairs and, Form-Encoded Key-Value Pairs
hypermedia and, Hypermedia Technologies
linking resources and, Link the Resources to Each Other
user accounts and, Why Should User Accounts Be Resources?
XHTML 4, XHTML 4 forms
forward slash (/)
Django “house style” and, Define Resources and Give Them URIs
XPath, using, Web Services Are Web Sites
“Found” 302 response code, 302 (“Found”)
4Suite, Python: ElementTree
Framework-specific serialization formats, Framework-Specific Serialization Formats
frameworks for RESTful services, Frameworks for RESTful ServicesConclusion
From request header, From

G

“Gateway Timeout” 504 response code, 504 (“Gateway Timeout”)
GData, RESTful, Resource-Oriented Architectures, GData
gem program, Ruby: rest-open-uri and net/http
geo microformat specification, XHTML with Microformats
Gertler, Nat, Designing Read-Only Resource-Oriented Services
GET method, HTTP: Documents in Envelopes, Making the Request: HTTP Libraries, GET, PUT, and DELETE
ActiveResource clients and, An ActiveResource Client
APP resources and, Summary
conditional HTTP, Conditional HTTP GET, Conditional GET
database-backed control flow and, GET
open-uri library and, Ruby: rest-open-uri and net/http
partial, Partial GET
read-only resources and, Turning Requirements Into Read-Only Resources
Ruby controllers and, Resources, Controllers, and Views
S3, Resources, The Bucket
safety and idempotence, Safety and Idempotence
scoping information, Scoping Information
uniform interface and, The Uniform Interface
user controllers and, The User Controller
Gmail, Addressability
Ajax and, Ajax Applications as REST Clients, Don’t Bogart the Benefits of REST
“Gone” 410 response code, PUT, Three to Seven Status Codes: The Bare Minimum, 410 (“Gone”)
Google, Method Information
Calendar, Applications with a Web Interface
GData, GData
links and connectedness, Links and Connectedness
maps, Representing Maps and Points on Maps
representations and, Deciding Between Representations
Resource-Oriented Architecture and, Addressability
SOAP and, SOAP
Web Accelerator and, Why safety and idempotence matter
Gourley, David, Caching
Gregorio, Joe, Python: httplib2, Turning Requirements Into Read-Only Resources
gs:doGoogleSearch remote procedure, SOAP
GUI elements, The Ajax Architecture
gzip, Compression

H

Hadley, Marc, Describing a del.icio.us resource
hAtom microformat specification, XHTML with Microformats
hCalendar microformat specification, XHTML with Microformats, Ad Hoc XHTML
hCard microformat specification, XHTML with Microformats, XHTML with Microformats, Ad Hoc XHTML
HEAD method, Making the Request: HTTP Libraries, HEAD and OPTIONS
caching and, Caching
read-only resources and, Turning Requirements Into Read-Only Resources
S3, Resources, The S3 Object
safety and idempotence, Safety and Idempotence
uniform interface and, The Uniform Interface
headers, The HTTP Header Top InfinityX-WSSE
nonstandard, Nonstandard HeadersX-WSSE
standard, Standard HeadersWWW-Authenticate
hierarchy into path variables, Encode Hierarchy into Path VariablesScale
High REST, Leftover Terminology
Host request header, Host
How to create a REST Protocol (Gregorio, Joe), Turning Requirements Into Read-Only Resources
hpricot gem, Ruby: REXML, I Guess
href attribute (link tag), XHTML 4 links
hResume microformat specification, XHTML with Microformats
hReview microformat specification, XHTML with Microformats
HTML, Kinds of Things on the Programmable Web, XHTML 5
linking resources, Link the Resources to Each Other
XHTML and, XHTML
HTTP, Kinds of Things on the Programmable Web, HTTP: Documents in EnvelopesHTTP: Documents in Envelopes, HTTP
authentication, Authentication, Authorization, Privacy, and Trust, Authentication and AuthorizationWSSE username token
Basic authentication, Authentication, Authorization, Privacy, and Trust, Basic authentication
data sets and, Split the Data Set into Resources
Digest authentication, Authentication, Authorization, Privacy, and Trust, Digest authenticationDigest authentication
encodings, XML and HTTP: Battle of the encodings
libraries, Making the Request: HTTP Libraries
methods, The Uniform Interface
RPC-style architectures and, RPC-Style Architectures
sessions, Statelessness
standard features of, Standard Features of HTTPPartial GET
WSSE authentication, Optional Features, Authentication, Authorization, Privacy, and Trust, WSSE username token
HTTP Basic authentication, Authentication, Authorization, Privacy, and Trust
HTTP response codes (see response codes (HTTP))
“HTTP Version Not Supported” 505 response code, 505 (“HTTP Version Not Supported”)
HTTP+POX (HTTP plus Plain Old XML), Leftover Terminology
HTTP: The Definitive Guide (Totty, Gourley), Caching
HttpClient (Java), Java: HttpClient
httplib2 (Python), Python: httplib2
HTTPS, Authentication, Authorization, Privacy, and Trust
certificates, Making the Request: HTTP Libraries
HttpURLConnection class, Restlet
HTTPWebRequest, C#: System.Web.HTTPWebRequest
http_authentication Ruby plugin, A Social Bookmarking Web Service
Hybrid architectures (RPC), REST-RPC Hybrid Architectures
hypermedia, Links and Connectedness, Link This Resource to Existing Resources, Design the Representation(s) Served to the Client
descriptions, Hypermedia Descriptions
natural-language description and, Natural-Language Service Description
technologies, Hypermedia TechnologiesIs WADL evil?
WADL and, WADLIs WADL evil?
hypermedia as engine of application state (see connectedness)

I

iCalendar, Ad Hoc XHTML
idempotence, Safety and IdempotenceWhy safety and idempotence matter
uniform interface, Safety and Idempotence
If-Match HTTP header, If-Match
If-Modified-Since HTTP header, Optional Features, Conditional HTTP GET, Conditional GET, If-Modified-Since
If-None-Match HTTP header, Conditional HTTP GET, If-None-Match
conditional GET and, Conditional GET
If-Range HTTP header, If-Range
If-Unmodified-Since header, If-Unmodified-Since
image/svg+xml media type, SVG
incoming representations, Incoming Representations
INSERT statement (SQL), An ActiveResource Client
“Internal Server Error” 500 response code, HTTP Response Codes, What Might Go Wrong?, What Might Go Wrong?, Three to Seven Status Codes: The Bare Minimum, 500 (“Internal Server Error”)
ISO 8859-1 encoding, Encoding Issues
itemsPerPage element (OpenSearch), OpenSearch

L

language (natural) description, Natural-Language Service Description
Last-Modified HTTP header, Optional Features, Conditional HTTP GET, What’s Supposed to Happen?, Last-Modified
conditional GET and, Conditional GET, Conditional GET
LBYL (Look-Before-You-Leap) requests, Look-Before-You-Leap Requests
“Length Required” 411 response code, 411 (“Length Required”)
li HTML tag, XHTML
libcurl, PHP: libcurl
libgmail library, Ajax Applications as REST Clients
libopenssl-ruby, Ruby: rest-open-uri and net/http
libraries
HTTP, Making the Request: HTTP Libraries
S3, using, Using the S3 Client Library
standard, The Programmable Web and Its Inhabitants
libwww-perl (LWP), Other Languages
libxml2 library, Ruby: REXML, I Guess
PHP XML parsers and, PHP
limit parameter, The ApplicationController
link tag, XHTML 4 links
links, The Bucket List, Links and ConnectednessLinks and Connectedness
hypermedia and, Hypermedia Technologies
resources to existing resources, Link This Resource to Existing ResourcesLink This Resource to Existing Resources, Link This Resource to Existing ResourcesWhat’s Supposed to Happen?
S3 clients and, Why Connectedness Matters
XHTML 4, XHTML 4 links
Linux, installing net/https library, Ruby: rest-open-uri and net/http
Lisp, Other Languages
XML parsers, Other Languages
Location response header, Default caching rules, 3xx: Redirection, Location
Look-Before-You-Leap (LBYL) requests, Look-Before-You-Leap Requests
Lovett, Chris, C#: System.Xml.XmlReader
Low REST, Leftover Terminology
LWP (libwww-perl), Other Languages

M

Max-Forwards header, Max-Forwards
media types, HTTP: Documents in Envelopes
members (APP), Collections
metadata, Representations
method information, Method Information
“Method Not Allowed” 405 response code, 405 (“Method Not Allowed”)
methods, Method InformationMethod Information
S3, Resources
microformats with XHMTL, XHTML with MicroformatsXHTML with Microformats
model classes, Model CodeThe Bookmark Model
“Moved Permanently” 301 response code, PUT, Three to Seven Status Codes: The Bare Minimum, 301 (“Moved Permanently”)
“Multi-Status” 207 response code, 207 (“Multi-Status”)
“Multiple Choices” 300 response code, 300 (“Multiple Choices”)
MySQL, Figuring Out the Data Set

N

names for resources, Name the ResourcesURI Recap
natural-language description, Natural-Language Service Description
.NET Common Language Runtime (CLR), C#: System.Web.HTTPWebRequest, C#: System.Xml.XmlReader
net/http library, Ruby: rest-open-uri and net/http
Net::HTTP class, Ruby: rest-open-uri and net/http, Processing the Response: XML Parsers
NetworkCredential, C#: System.Web.HTTPWebRequest
Nielsen, Jakob, Permanent URIs Versus Readable URIs
“No Content” 204 response code, 204 (“No Content”)
Noelios Restlet Engine (NRE), Restlet
“Non-Authoritative Information” 203 response code, 203 (“Non-Authoritative Information”)
“Not Acceptable” 406 response code, 406 (“Not Acceptable”)
“Not Found” 404 response code, HTTP Response Codes, What Might Go Wrong?, What Might Go Wrong?, Three to Seven Status Codes: The Bare Minimum, 404 (“Not Found”)
database-backed control flow, PUT
“Not Implemented” 501 response code, 501 (“Not Implemented”)
“Not Modified” 304 response code, Conditional GET, 304 (“Not Modified”)
Nottingham, Mark, POST Once Exactly
NRE (Noelios Restlet Engine), Restlet

O

object (RDF assertion), RDF and RDFa
object-oriented design of S3, Object-Oriented Design of S3What If S3 Was a Standalone Library?
object-relational mapping (ORM), Create the Data Model
objects, The Programmable Web and Its Inhabitants
S3, Object-Oriented Design of S3, The S3 ObjectThe S3 Object
“OK” 200 response code, HTTP Response Codes, What’s Supposed to Happen?, What Might Go Wrong?, PUT, 200 (“OK”)
modifying resources, What’s Supposed to Happen?
open-uri library, Optional Features, Processing the Response: XML Parsers
OpenSearch, OpenSearch
“Method Not Allowed” 405 response code, POST Once Exactly
OPTIONS method, Making the Request: HTTP Libraries, HEAD and OPTIONS
uniform interface and, The Uniform Interface
org.w3c.dom.* package, Java: javax.xml, Xerces, or XMLPull
org.xml.sax.* package, Java: javax.xml, Xerces, or XMLPull
ORM (object-relational mapping), Create the Data Model
outgoing representations, Outgoing Representations
overloaded POST, Overloaded POST: The not-so-uniform interface, Overloading POST
PUT/DELETE, faking, Faking PUT and DELETE
safety and idempotence, Safety and Idempotence
URI design and, URI Design

P

params parameter, using list item resources and, param[:id] for things that aren’t IDs
Park Place, Parting Words
parsers (XML), Processing the Response: XML Parsers
“Partial Content” 206 response code, 206 (“Partial Content”)
path variables
designing URIs, URI Design
encoding hierarchy into, Encode Hierarchy into Path VariablesScale
paths (URI), HTTP: Documents in Envelopes
“Payment Required” 402 response code, 402 (“Payment Required”)
Perl, Other Languages
XML parsers, Other Languages
permanent URIs, Permanent URIs Versus Readable URIs
PHP, PHP: libcurl
XML parsers, PHP
Pilgrim, Mark, WSSE username token
places as resources, Split the Data Set into Resources
PNG format, Representing Maps and Points on Maps
POE (POST Once Exactly), POST Once Exactly
POE request header, POE
POE-Links header, POE-Links
POST method, Method Information, Making the Request: HTTP Libraries, POSTOverloaded POST: The not-so-uniform interface, Expose a Subset of the Uniform Interface
ActiveResource clients and, An ActiveResource Client
APP resources and, Summary
caching and, Default caching rules
objects, creating, The Bookmarks Controller
Once Exactly (POE), POST Once ExactlyPOST Once Exactly
overloading, Overloaded POST: The not-so-uniform interface, Safety and Idempotence, Overloading POST, URI Design
resources, creating/appending, POST for creating a new resource
Ruby controllers and, Resources, Controllers, and Views
S3, Resources
subordinate resources, creating, Design the Representation(s) Accepted from the Client
uniform interface and, The Uniform Interface
user controllers and, The User Controller
versus PUT, New Resources: PUT Versus POST
web applications and web services and, Web Applications as Web Services
postNewAtomMember method (Atom), Describing an APP collection
Pragma header, Pragma
“Precondition Failed” 412 response code, 412 (“Precondition Failed”)
prepackaged control flows, Prepackaged Control FlowsPOST Once Exactly
privacy (user accounts), Authentication, Authorization, Privacy, and TrustAuthentication, Authorization, Privacy, and Trust
private access policy, Setting Access Policy
programmable web, The Programmable Web and Its InhabitantsLeftover Terminology
technologies on, Technologies on the Programmable WebWADL
Prototype, Prototype
“Proxy Authentication Required” 407 response code, 407 (“Proxy Authentication Required”)
proxy caches, Addressability
Proxy-Authenticate header, Proxy-Authenticate
Proxy-Authorization header, Proxy-Authorization
ProxyPass, Request Proxying
public-read access policy, Setting Access Policy
public-write access policy, Setting Access Policy
pull parsers, Processing the Response: XML Parsers
PUT method, Method Information, GET, PUT, and DELETE
ActiveResource clients and, An ActiveResource Client
APP resources and, Summary
caching and, Default caching rules
database-backed control flow and, PUT
faking, Faking PUT and DELETE
HTTP libraries and, Making the Request: HTTP Libraries
overloading
PUT/DELETE, faking, Faking PUT and DELETE
Ruby controllers and, Resources, Controllers, and Views
S3, Resources, The S3 Object
S3::Bucket#put, The Bucket
safety and idempotence, Safety and Idempotence
uniform interface and, The Uniform Interface
user controllers and, The User Controller
UsersController and, The UsersController
versus POST, Creating subordinate resources, New Resources: PUT Versus POST
web applications and web services and, Web Applications as Web Services
Python
clients, A Python Client for the Simple Service
httplib2, Python: httplib2
XML parsers, Python: ElementTree

R

Rails, Ruby on RailsConclusion
Range request header, Range
RDF (Resource Description Framework), RDF and RDFa
read-only resource-oriented services, Designing Read-Only Resource-Oriented ServicesConclusion
read-only web services, REST-RPC Hybrid Architectures
read/write resource-oriented services, Designing Read/Write Resource-Oriented ServicesA Look Back at the Map Service
readable URIs, Permanent URIs Versus Readable URIs
recent bookmark controller, The Recent Bookmarks Controller
redirect loops, Optional Features
redirection, 3xx: Redirection307 (“Temporary Redirect”)
Referer request header, Referer
regular expressions (Django), The bookmark list view
rel attribute (link tag), XHTML 4 links
rel HTML attributes, XHTML
rel-license microformat specification, XHTML with Microformats
rel-nofollow microformat specification, XHTML with Microformats
rel-tag microformat specification, XHTML with Microformats
reliable messaging, Reliable Messaging
Remote Procedure Calls (RPC), URI
repetition model (XHTML), Link the Resources to Each Other
representations, RepresentationsDeciding Between Representations, Resource-Oriented Basics
addressability and, Representations Should Be Addressable
designing, Design Your RepresentationsRepresenting Lists of Search Results, Design the Representation(s) to Be Served to the Client, Design the Representation(s) Accepted from the ClientDesign the Representation(s) Served to the Client
entity-body, HTTP: Documents in Envelopes
formats, Representation FormatsThe character encoding of a JSON document
incoming, Incoming Representations
outgoing, Outgoing Representations
outgoing/incoming, Outgoing Representations
S3, The Bucket List
“Request Entity Too Large” 413 response code, 413 (“Request Entity Too Large”)
request headers, HTTP: Documents in Envelopes
request signing, Request Signing and Access ControlSetting Access Policy
“Request Timeout” 408 response code, 408 (“Request Timeout”)
“Request-URI Too Long” 414 response code, 414 (“Request-URI Too Long”)
“Requested Range Not Satisfiable” 416 response code, 416 (“Requested Range Not Satisfiable”)
resource
design, Resource Design
forms, Hypermedia Technologies
state, Application State Versus Resource State, The Representation Talks About the State of the Resource, State and Statelessness
Resource Description Framework (RDF), RDF and RDFa
Resource-Oriented Architecture (ROA), RESTful, Resource-Oriented Architectures, The Resource-Oriented ArchitectureThat’s It!, REST and ROA Best PracticesWhat Problem Does this Solve?
addressability, AddressabilityAddressability
basics, Resource-Oriented Basics
procedure, The Generic ROA Procedure
read/write, designing, Designing Read/Write Resource-Oriented ServicesA Look Back at the Map Service
representations and, Representations
URIs, URIsThe Relationship Between URIs and Resources
versus Big Web Services, The Resource-Oriented Architecture Versus Big Web ServicesConclusion
resources, Resources, Designing Read/Write Resource-Oriented ServicesA Look Back at the Map Service, Resource-Oriented Basics, Resources, Controllers, and Views
connecting, Connect Resources to Each Other
data sets, splitting into, Split the Data Set into Resources
design, Resource DesignImplementation: The routes.rb File, Resource DesignWhen In Doubt, Make It a Resource
Django, implementing views, Implement Resources as Django ViewsFurther directions
relationships between, Relationships Between Resources
URIs, naming resources with, Name the Resources with URIs
user accounts, User Accounts as ResourcesWhat Might Go Wrong?
resources, defining, Define Resources and Give Them URIs
response codes (HTTP), HTTP: Documents in Envelopes, HTTP Response Codes, The HTTP ResponseConclusion, Handling the Response, The HTTP Response Code Top 42
database-backed control flow, PUT
responseXML parser (JavaScript), JavaScript: responseXML
REST (Representational State Transfer), sending representations and, State and Statelessness
rest-open-uri library, Ruby: rest-open-uri and net/http
rest-open-uri, installing, Ruby: rest-open-uri and net/http
Restlet (Java), A Service Implementation, Frameworks for RESTful Services, RestletConclusion
services, writing, Writing Restlet ServicesCompiling, running, and testing
Retry-After response header, Retry-After
rev attribute (link tag), XHTML 4 links
rev HTML attributes, XHTML
REXML, Ruby: REXML, I GuessPython: ElementTree
REXML::document parser, Ruby: rest-open-uri and net/http
ROA (see Resource-Oriented Architecture)
routing (Rails), Routing
RPC (Remote Procedure Calls), URI
RPC-style architectures, RPC-Style Architectures
Ruby
Amazon Web Services and, The Programmable Web and Its Inhabitants
HTTP client libraries, Ruby: rest-open-uri and net/http
on Rails, Ruby on RailsThe Rails/ROA Design Procedure
XML parsers and, Ruby: REXML, I GuessPython: ElementTree

S

S3 (Simple Storage Service), The Programmable Web and Its Inhabitants, Introducing the Simple Storage ServiceParting Words
addressability, Addressability
client, An S3 ClientThe S3 Object
library, using, Using the S3 Client Library
connectedness and, Why Connectedness Matters
request signing and access control, Request Signing and Access ControlSetting Access Policy
S3::Bucket#delete method, The Bucket
S3::Bucket#put method, The Bucket
s3sh (command shell for Ruby), The Programmable Web and Its Inhabitants, Wrappers, WADL, and ActiveResource
safety (HTTP methods), Safety and IdempotenceWhy safety and idempotence matter
SAX parsers, Processing the Response: XML Parsers
scoping information, Scoping Information
encoding hierarchy into path variables and, Encode Hierarchy into Path VariablesScale
script tag, Dynamically writing the script tag
search results, representing lists of, Representing Lists of Search ResultsRepresenting Lists of Search Results
“Secret Access Key” (Amazon), An S3 Client
secret keys (S3 requests), Request Signing and Access Control
Secure Socket Layer (see SSL)
security, Security
“See Other” 303 response code, What Might Go Wrong?, 303 (“See Other”)
SELECT statement (SQL), An ActiveResource Client
semicolons (;) scoping information, No Hierarchy? Use Commas or SemicolonsScale
server-side errors, 5xx: Server-Side Error
service documents (APP), Service document
“Service Unavailable” 503 response code, What Might Go Wrong?, What Might Go Wrong?, 503 (“Service Unavailable”)
service versioning, Service Versioning
Service-Oriented Architecture (see SOA)
Service-Trampled REST (STREST), Leftover Terminology
services, The Building Blocks of ServicesIs WADL evil?
Restlet, writing, Writing Restlet ServicesCompiling, running, and testing
session affinity, Application State Versus Resource State
session replication, Application State Versus Resource State
sessions (HTTP), Statelessness
Set-Cookie response header, Set-Cookie
signatures, Security
Simple Storage Service (S3), The Programmable Web and Its Inhabitants, Introducing the Simple Storage ServiceParting Words
addressability, Addressability
client, An S3 ClientThe S3 Object
library, using, Using the S3 Client Library
connectedness and, Why Connectedness Matters
request signing and access control, Request Signing and Access ControlSetting Access Policy
simple-http (Common Lisp), Other Languages
Slug request header, Slug
Snell, James, Resource-Oriented What Now?
SOA (Service-Oriented Architecture), Leftover Terminology, BPEL, ESB, and SOA
SOAP, Method Information, SOAP, SOAPThe Resource-Oriented Alternative
POST method, overloading, Overloading POST
REST as a competitor to, Leftover Terminology
S3 and, Resources
security and, Security
SQL databases, An ActiveResource Client, Database-Backed Control Flow
square brackets ([ ]), using XPath, Web Services Are Web Sites
SSL (Secure Sockets Layer), The Resource-Oriented Alternative
certificates, Making the Request: HTTP Libraries
standard libraries, The Programmable Web and Its Inhabitants
standardization, Description Through Standardization
startindex element (OpenSearch), OpenSearch
state (see statelessness)
statelessness, State and Statelessness, Why Statelessness Matters
application state versus resource state, Application State Versus Resource State
ROA, StatelessnessApplication State Versus Resource State
STREST (Service-Trampled REST), Leftover Terminology
subject (RDF assertion), RDF and RDFa
subordinate resources, Expose a Subset of the Uniform Interface
creating, Creating subordinate resources
HTTP POST requests, creating with, Design the Representation(s) Accepted from the Client
Sun Web Services Developer Pack, Java: javax.xml, Xerces, or XMLPull
SVG format, Representing Maps and Points on Maps, SVG
“Switching Protocols” 101 response code, 101 (“Switching Protocols”)

T

table HTML tag, XHTML
tags, del.icio.us: The Sample Application
management for, Remodeling the REST Way
TagSoup XML parser, Java: javax.xml, Xerces, or XMLPull
TCP/IP sockets, What the Sample Clients Do
TE request header, TE
“Temporary Redirect” 307 response code, 307 (“Temporary Redirect”)
terminology of web services, Kinds of Things on the Programmable Web
text/html media, XHTML
text/xml media, XML and HTTP: Battle of the encodings
TLS (Transport Layer Security), The Resource-Oriented Alternative
totalResults element (OpenSearch), OpenSearch
Totty, Brian, Caching
to_xml (Rails), Design the Representation(s) Served to the Client
connecting resources and, Connect Resources to Each Other
Framework-specific serialization formats, Framework-Specific Serialization Formats
TRACE method, Making the Request: HTTP Libraries
Trailer response header, Trailer
transactions, Transactions, Transactions
Transfer-Encoding header, Transfer-Encoding
Transport Layer Security (TLS), The Resource-Oriented Alternative
tree-style parsers, Processing the Response: XML Parsers
triple (RDF assertion), RDF and RDFa
trust (user accounts), Authentication, Authorization, Privacy, and TrustAuthentication, Authorization, Privacy, and Trust

U

UDDI, UDDI
ul HTML tag, XHTML
“Unauthorized” 401 response code, Basic authentication
“Unauthorized” 401 response code, What Might Go Wrong?, What Might Go Wrong?, 401 (“Unauthorized”)
unauthorized access, What Might Go Wrong?
Unicode, Encoding Issues
parsing XML and, Python: ElementTree
Uniform class (Restlet), Basic Concepts
uniform interface, The Resource-Oriented Architecture, Why the Uniform Interface Matters, The Uniform InterfaceOverloading POST, Why the Uniform Interface Matters
exposing subsets of, Expose a Subset of the Uniform Interface, Expose a Subset of the Uniform Interface
Universal Encoding Detector, Encoding Issues
Universal Product Codes (UPCs), RPC-Style Architectures
Universal Resource Identifier (see URIs)
“Unsupported Media Type” 415 response code, What Might Go Wrong?, What Might Go Wrong?, 415 (“Unsupported Media Type”)
database-backed control flow, Database-Backed Control Flow
“Unused” 306 response code, 306: Unused
UPCs (Universal Product Codes), RPC-Style Architectures
UPDATE statement (SQL), An ActiveResource Client
Upgrade request header, Upgrade
URI Templating, Link This Resource to Existing Resources
URIs (Universal Resource Identifier), The Programmable Web and Its Inhabitants, RPC-Style Architectures, URI, URI Recap
addressability and, Addressability
bookmarks and, del.icio.us: The Sample ApplicationWhat the Sample Clients Do, The Bookmarks Controller
controller, The URI Controller
design, URI Design
Django and, Define Resources and Give Them URIs
permanent versus readable, Permanent URIs Versus Readable URIs
resources, naming, Name the Resources with URIs, Name the Resources with URIs
ROAs and, URIsThe Relationship Between URIs and Resources
signing, Signing a URI
templates, URI Templates
using maximum length workarounds, Overloading POST
web clients, writing, Web Services Are Web Sites
“URL as UI” (Nielsen, Jakob), Permanent URIs Versus Readable URIs
urllib2 HTTP client, Python: httplib2, Python: httplib2
URLs (see URIs)
US-ASCII encoding, Encoding Issues
“Use Proxy” 305 response code, 305 (“Use Proxy”)
user accounts, User Accounts as ResourcesWhat Might Go Wrong?, Remodeling the REST Way
linking resources, Link This Resource to Existing ResourcesLink This Resource to Existing Resources
user controllers, The User Controller
user tags controller, The User Tags Controller
User-Agent request header, User-Agent
UsersController, The UsersControllerThe UsersController
UsersController#create Rails method, The User Controller
UsersController#destroy Rails method, The User Controller
UsersController#index Rails method, The User Controller
UsersController#show Rails method, The User Controller
UsersController#update Rails method, The User Controller
UTF-8 encoding, Encoding Issues

V

values (S3), A Few Words About Objects
Vary response header, Vary
VBScript, From AJAX to Ajax
vCard, Ad Hoc XHTML
Via header, Via
views, Resources, Controllers, and Views
Django, implementing resources as, Implement Resources as Django ViewsFurther directions
VirturalHost class (Restlet), Basic Concepts
VoteLinks, XHTML with Microformats

W

W-* technologies, WS-*
W3C’s HTML validator, The Bookmarks Controller
WADL (Web Application Description Language), WADL, Wrappers, WADL, and ActiveResource, Clients Made Easy with WADL, Clients Made Transparent with ActiveResource, The Resource-Oriented Alternative
hypermedia technologies and, Hypermedia Technologies, WADLIs WADL evil?
Warning response header, Warning
Web Accelerator, Why safety and idempotence matter
Web Application Description Language (see WADL)
Web Hypertext Application Technology Working Group (WHATWG), XHTML 5
web interfaces and applications, Applications with a Web InterfaceApplications with No Web Interface
web service clients (see clients)
Web Service Description Language (see WSDL)
Web Services Developer Pack (Sun), Java: javax.xml, Xerces, or XMLPull
WebDAV, Why the Uniform Interface Matters
WeblogsController class, Routing
WHATWG (Web Hypertext Application Technology Working Group), XHTML 5
Windows-1252 encoding, Encoding Issues
wrapper libraries, Web Services Are Web Sites
wrappers, Wrappers, WADL, and ActiveResource
WS-Addressing standard, Kinds of Things on the Programmable Web
WS-ReliableMessaging, Reliable Messaging
WS-Security Extension (see WSSE HTTP authentication)
WSDL (Web Service Description Language), Method Information, WSDL, WSDL
POST method, overloading, Overloading POST
WSSE HTTP authentication, Optional Features, Authentication, Authorization, Privacy, and Trust, WSSE username tokenWSSE username token
WWW-Authenticate header, What Might Go Wrong?, WWW-Authenticate
Basic authentication and, Basic authentication
Digest authentication and, Digest authentication
WSSE HTTP authentication and, WSSE username token

X

x-amz-acl header, Setting Access Policy
X-HTTP-Method-Override request header, X-HTTP-Method-Override
X-WSSE request header, X-WSSE
Xerces, Java: javax.xml, Xerces, or XMLPull
XFN (XHTML Friends Network), XHTML with Microformats
xFolk microformat specification, XHTML with Microformats
XHTML, Representing the List of Planets, XHTMLXHTML, XHTML 5
ad hoc, Ad Hoc XHTML
microformats, XHTML with MicroformatsXHTML with Microformats
XHTML 4, XHTML 4Shortcomings of XHTML 4
XMDP (XHTML Meta Data Profiles), XHTML with Microformats
XML, Kinds of Things on the Programmable Web
ActiveRecord and, Design the Representation(s) Served to the Client
ad hoc vocabularies, Other XML Standards and Ad Hoc Vocabularies
encodings and, XML and HTTP: Battle of the encodings
parsers, Processing the Response: XML Parsers
representation of user accounts, Design the Representation(s) Accepted from the Client
SOAP, using, SOAPThe Resource-Oriented Alternative
XHTML and, XHTML
XML-RPC requests and, RPC-Style Architectures
XML for <SCRIPT>, JavaScript: responseXML
XML-RPC, RPC-Style Architectures, XML-RPC
POST method, overloading, Overloading POST
xml.sax module (Python), Python: ElementTree
XML::LibXML::Reader module (Perl), Other Languages
XML::SAX::PurePerl module (Perl), Other Languages
XML::Simple module (Perl), Other Languages
XML::XPath modules (Perl), Other Languages
XMLHttpRequest (JavaScript), JavaScript: XMLHttpRequest, JavaScript: responseXML, Ajax Applications as REST Clients, Making the Request
cross-browser issues and, Cross-Browser Issues and Ajax Libraries
XMLPull, Java: javax.xml, Xerces, or XMLPull
xml_parser_create function (PHP), PHP
XOXO (Extensible Open XHTML Outlines), XHTML with Microformats
XPath, Method Information, What the Sample Clients Do, Processing the Response: XML Parsers, Writing Restlet Clients
exposition, Web Services Are Web Sites
S3 and, The Bucket List

Y

YAGNI (You Aren’t Gonna Need It), Conclusion
Yahoo! web services, RESTful, Resource-Oriented Architectures
searching the Web with, Web Services Are Web Sites
user accounts and, User Accounts as Resources

Get RESTful Web Services now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.