Log In
Or create an account ->
Imperial Library
Home
About
News
Upload
Forum
Help
Login/SignUp
Index
RESTful Web Services Cookbook
SPECIAL OFFER: Upgrade this ebook with O’Reilly
Preface
Scope of the Book
Companion Material
How This Book Is Organized
Conventions Used in This Book
Using Code Examples
Safari® Books Online
How to Contact Us
Acknowledgments
Mike Amundsen’s Contribution
1. Using the Uniform Interface
1.1. How to Keep Interactions Visible
Problem
Solution
Discussion
1.2. When to Trade Visibility
Problem
Solution
Discussion
1.3. How to Maintain Application State
Problem
Solution
Discussion
1.4. How to Implement Safe and Idempotent Methods on the Server
Problem
Solution
Discussion
Implementing safe methods
Implementing idempotent methods
Idempotency of DELETE
1.5. How to Treat Safe and Idempotent Methods in Clients
Problem
Solution
Discussion
Safe methods
Idempotent methods
1.6. When to Use GET
Problem
Solution
Discussion
1.7. When to Use POST
Problem
Solution
Discussion
1.8. How to Create Resources Using POST
Problem
Solution
Discussion
1.9. When to Use PUT to Create New Resources
Problem
Solution
Discussion
1.10. How to Use POST for Asynchronous Tasks
Problem
Solution
Discussion
1.11. How to Use DELETE for Asynchronous Deletion
Problem
Solution
Discussion
1.12. When to Use Custom HTTP Methods
Problem
Solution
Discussion
1.13. When and How to Use Custom HTTP Headers
Problem
Solution
Discussion
2. Identifying Resources
2.1. How to Identify Resources from Domain Nouns
Problem
Solution
Discussion
2.2. How to Choose Resource Granularity
Problem
Solution
Discussion
2.3. How to Organize Resources into Collections
Problem
Solution
Discussion
2.4. When to Combine Resources into Composites
Problem
Solution
Discussion
2.5. How to Support Computing/Processing Functions
Problem
Solution
Discussion
2.6. When and How to Use Controllers to Operate on Resources
Problem
Solution
Discussion
3. Designing Representations
3.1. How to Use Entity Headers to Annotate Representations
Problem
Solution
Discussion
Content-Type
Content-Length
Content-Language
Content-MD5
Content-Encoding
Last-Modified
3.2. How to Interpret Entity Headers
Problem
Solution
Discussion
3.3. How to Avoid Character Encoding Mismatch
Problem
Solution
Discussion
3.4. How to Choose a Representation Format and a Media Type
Problem
Solution
Discussion
Using standard or well-known media types
Introducing new formats and media types
3.5. How to Design XML Representations
Problem
Solution
Discussion
3.6. How to Design JSON Representations
Problem
Solution
Discussion
3.7. How to Design Representations of Collections
Problem
Solution
Discussion
3.8. How to Keep Collections Homogeneous
Problem
Solution
Discussion
3.9. How to Use Portable Data Formats in Representations
Problem
Solution
Discussion
Numbers
Countries and territories
Currencies
Dates and times
Language tags
Time zone identifiers
3.10. When to Use Entity Identifiers
Problem
Solution
Discussion
3.11. How to Encode Binary Data in Representations
Problem
Solution
Discussion
3.12. When and How to Serve HTML Representations
Problem
Solution
Discussion
3.13. How to Return Errors
Problem
Solution
Discussion
Errors due to client inputs: 4xx
Errors due to server errors: 5xx
Message body for errors
3.14. How to Treat Errors in Clients
Problem
Solution
Discussion
4. Designing URIs
4.1. How to Design URIs
Problem
Solution
Discussion
Domains and subdomains
Forward-slash separator
Underscore and hyphen
Ampersand
Comma and semicolon
Full stop, or period
Implementation-specific file extensions
Spaces and capital letters
4.2. How to Use URIs As Opaque Identifiers
Problem
Solution
Discussion
4.3. How to Let Clients Treat URIs As Opaque Identifiers
Problem
Solution
Discussion
4.4. How to Keep URIs Cool
Problem
Solution
Discussion
5. Web Linking
5.1. How to Use Links in XML Representations
Problem
Solution
Discussion
5.2. How to Use Links in JSON Representations
Problem
Solution
Discussion
5.3. When and How to Use Link Headers
Problem
Solution
Discussion
5.4. How to Assign Link Relation Types
Problem
Solution
Discussion
5.5. How to Use Links to Manage Application Flow
Problem
Solution
Discussion
5.6. How to Deal with Ephemeral URIs
Problem
Solution
Discussion
5.7. When and How to Use URI Templates
Problem
Solution
Discussion
5.8. How to Use Links in Clients
Problem
Solution
Discussion
6. Atom and AtomPub
6.1. How to Model Resources Using Atom
Problem
Solution
Discussion
6.2. When to Use Atom
Problem
Solution
Discussion
6.3. How to Use AtomPub Service and Category Documents
Problem
Solution
Discussion
6.4. How to Use AtomPub for Feed and Entry Resources
Problem
Solution
Discussion
6.5. How to Use Media Resources
Problem
Solution
Discussion
7. Content Negotiation
7.1. How to Indicate Client Preferences
Problem
Solution
Discussion
7.2. How to Implement Media Type Negotiation
Problem
Solution
Discussion
7.3. How to Implement Language Negotiation
Problem
Solution
Discussion
7.4. How to Implement Character Encoding Negotiation
Problem
Solution
Discussion
7.5. How to Support Compression
Problem
Solution
Discussion
7.6. When and How to Send the Vary Header
Problem
Solution
Discussion
7.7. How to Handle Negotiation Failures
Problem
Solution
Discussion
7.8. How to Use Agent-Driven Content Negotiation
Problem
Solution
Discussion
7.9. When to Support Server-Driven Negotiation
Problem
Solution
Discussion
8. Queries
8.1. How to Design URIs for Queries
Problem
Solution
Discussion
8.2. How to Design Query Responses
Problem
Solution
Discussion
8.3. How to Support Query Requests with Large Inputs
Problem
Solution
Discussion
8.4. How to Store Queries
Problem
Solution
Discussion
9. Web Caching
9.1. How to Set Expiration Caching Headers
Problem
Solution
Discussion
9.2. When to Set Expiration Caching Headers
Problem
Solution
Discussion
9.3. When and How to Use Expiration Headers in Clients
Problem
Solution
Discussion
9.4. How to Support Caching for Composite Resources
Problem
Solution
Discussion
9.5. How to Keep Caches Fresh and Warm
Problem
Solution
Discussion
10. Conditional Requests
10.1. How to Generate Last-Modified and ETag Headers
Problem
Solution
Discussion
10.2. How to Implement Conditional GET Requests in Servers
Problem
Solution
Discussion
10.3. How to Submit Conditional GET and HEAD Requests from Clients
Problem
Solution
Discussion
10.4. How to Implement Conditional PUT Requests in Servers
Problem
Solution
Discussion
10.5. How to Implement Conditional DELETE Requests in Servers
Problem
Solution
Discussion
10.6. How to Make Unconditional GET Requests from Clients
Problem
Solution
Discussion
10.7. How to Submit Conditional PUT and DELETE Requests from Clients
Problem
Solution
Discussion
10.8. How to Make POST Requests Conditional
Problem
Solution
Discussion
10.9. How to Generate One-Time URIs
Problem
Solution
Discussion
11. Miscellaneous Writes
11.1. How to Copy a Resource
Problem
Solution
Discussion
11.2. How to Merge Resources
Problem
Solution
Discussion
11.3. How to Move a Resource
Problem
Solution
Discussion
11.4. When to Use WebDAV Methods
Problem
Solution
Discussion
11.5. How to Support Operations Across Servers
Problem
Solution
Discussion
11.6. How to Take Snapshots of Resources
Problem
Solution
Discussion
11.7. How to Undo Resource Updates
Problem
Solution
Discussion
11.8. How to Refine Resources for Partial Updates
Problem
Solution
Discussion
11.9. How to Use the PATCH Method
Problem
Solution
Discussion
11.10. How to Process Similar Resources in Bulk
Problem
Solution
Discussion
11.11. How to Trigger Bulk Operations
Problem
Solution
Discussion
11.12. When to Tunnel Multiple Requests Using POST
Problem
Solution
Discussion
11.13. How to Support Batch Requests
Problem
Solution
Discussion
11.14. How to Support Transactions
Problem
Solution
Discussion
12. Security
12.1. How to Use Basic Authentication to Authenticate Clients
Problem
Solution
Discussion
12.2. How to Use Digest Authentication to Authenticate Clients
Problem
Solution
Discussion
12.3. How to Use Three-Legged OAuth
Problem
Solution
Discussion
12.4. How to Use Two-Legged OAuth
Problem
Solution
Discussion
12.5. How to Deal with Sensitive Information in URIs
Problem
Solution
Discussion
12.6. How to Maintain the Confidentiality and Integrity of Representations
Problem
Solution
Discussion
13. Extensibility and Versioning
13.1. How to Maintain URI Compatibility
Problem
Solution
Discussion
13.2. How to Maintain Compatibility of XML and JSON Representations
Problem
Solution
Discussion
13.3. How to Extend Atom
Problem
Solution
Discussion
13.4. How to Maintain Compatibility of Links
Problem
Solution
Discussion
13.5. How to Implement Clients to Support Extensibility
Problem
Solution
Discussion
13.6. When to Version
Problem
Solution
Discussion
13.7. How to Version RESTful Web Services
Problem
Solution
Discussion
14. Enabling Discovery
14.1. How to Document RESTful Web Services
Problem
Solution
Discussion
14.2. How to Use OPTIONS
Problem
Solution
Discussion
A. Additional Reading
Books
References
Foundation
Atom and AtomPub
Caching
Formats and Media Types
Security
B. Overview of REST
Uniform Resource Identifiers
Resources
Representations
Uniform Interface
Hypermedia and Application State
C. HTTP Methods
OPTIONS
GET
HEAD
POST
PUT
DELETE
TRACE
D. Atom Syndication Format
Key Elements of Feeds and Entries
atom:author
atom:content and atom:summary
atom:id
atom:link
atom:title
atom:updated
Other Atom Elements to Consider
atom:category
atom:contributor
atom:generator
atom:icon
atom:logo
atom:published
atom:rights
atom:subtitle
E. Link Relation Registry
alternate
appendix
bookmark
chapter, section, subsection
contents
copyright
current
describedby
edit
edit-media
enclosure
first, last, next, next-archive, prev, previous, prev-archive, start
glossary
help
index
license
payment
related
replies
self
service
stylesheet
up
via
Index
About the Author
Colophon
SPECIAL OFFER: Upgrade this ebook with O’Reilly
← Prev
Back
Next →
← Prev
Back
Next →