| Foreword | | xi | |
| Preface | | xiii | |
| The Programmable Web and Its Inhabitants |
| | 1 | |
| Kinds of Things on the Programmable Web |
| | 4 | |
| HTTP: Documents in Envelopes |
| | 5 | |
| | 8 | |
| | 11 | |
| The Competing Architectures |
| | 13 | |
| Technologies on the Programmable Web |
| | 18 | |
| | 20 | |
| Writing Web Service Clients |
| | 23 | |
| Web Services Are Web Sites |
| | 23 | |
| del.icio.us: The Sample Application |
| | 26 | |
| Making the Request: HTTP Libraries |
| | 29 | |
| Processing the Response: XML Parsers |
| | 38 | |
| JSON Parsers: Handling Serialized Data |
| | 44 | |
| Clients Made Easy with WADL |
| | 47 | |
| What Makes Restful Services Different? |
| | 49 | |
| Introducing the Simple Storage Service |
| | 49 | |
| Object-Oriented Design of S3 |
| | 50 | |
| | 52 | |
| | 54 | |
| | 55 | |
| Request Signing and Access Control |
| | 64 | |
| Using the S3 Client Library |
| | 70 | |
| Clients Made Transparent with ActiveResource |
| | 71 | |
| | 77 | |
| The Resource-Oriented Architecture |
| | 79 | |
| Resource-Oriented What Now? |
| | 79 | |
| | 81 | |
| | 81 | |
| | 84 | |
| | 86 | |
| | 91 | |
| | 94 | |
| | 97 | |
| | 105 | |
| Designing Read-Only Resource-Oriented Services |
| | 107 | |
| | 108 | |
| Turning Requirements Into Read-Only Resources |
| | 109 | |
| | 110 | |
| Split the Data Set into Resources |
| | 112 | |
| | 117 | |
| Design Your Representations |
| | 123 | |
| Link the Resources to Each Other |
| | 135 | |
| | 137 | |
| | 140 | |
| Designing Read/Write Resource-Oriented Services |
| | 143 | |
| User Accounts as Resources |
| | 144 | |
| | 157 | |
| A Look Back at the Map Service |
| | 165 | |
| | 167 | |
| A Social Bookmarking Web Service |
| | 167 | |
| Figuring Out the Data Set |
| | 168 | |
| | 171 | |
| Design the Representation(s) Accepted from the Client |
| | 183 | |
| Design the Representation(s) Served to the Client |
| | 184 | |
| Connect Resources to Each Other |
| | 185 | |
| What's Supposed to Happen? |
| | 186 | |
| | 187 | |
| | 188 | |
| | 205 | |
| What Does the Client Need to Know? |
| | 209 | |
| REST and ROA Best Practices |
| | 215 | |
| | 215 | |
| The Generic ROA Procedure |
| | 216 | |
| | 216 | |
| | 217 | |
| | 218 | |
| | 218 | |
| | 221 | |
| | 227 | |
| | 233 | |
| | 234 | |
| | 234 | |
| | 235 | |
| Permanent URIs Versus Readable URIs |
| | 236 | |
| Standard Features of HTTP |
| | 237 | |
| | 251 | |
| | 252 | |
| Why Should a User Trust the HTTP Client? |
| | 253 | |
| The Building Blocks of Services |
| | 259 | |
| | 259 | |
| Prepackaged Control Flows |
| | 272 | |
| | 284 | |
| The Resource-Oriented Architecture Versus Big Web Services |
| | 299 | |
| What Problems Are Big Web Services Trying to Solve? |
| | 300 | |
| | 300 | |
| | 304 | |
| | 309 | |
| | 310 | |
| | 311 | |
| | 312 | |
| | 313 | |
| | 314 | |
| Ajax Applications as Rest Clients |
| | 315 | |
| | 315 | |
| | 316 | |
| | 317 | |
| | 320 | |
| The Disadvantages of Ajax |
| | 320 | |
| | 322 | |
| | 323 | |
| | 324 | |
| | 325 | |
| Don't Bogart the Benefits of Rest |
| | 326 | |
| Cross-Browser Issues and Ajax Libraries |
| | 327 | |
| Subverting the Browser Security Model |
| | 331 | |
| Frameworks for Restful Services |
| | 339 | |
| | 339 | |
| | 343 | |
| | 354 | |
| Some Resources for Rest and Some Restful Resources |
| | 365 | |
| | 365 | |
| | 367 | |
| The HTTP Response Code Top 42 |
| | 371 | |
| Three to Seven Status Codes: The Bare Minimum |
| | 372 | |
| | 373 | |
| | 374 | |
| | 377 | |
| | 380 | |
| | 387 | |
| The HTTP Header Top Infinity |
| | 389 | |
| | 390 | |
| | 404 | |
| Index | | 409 | |