You've built web sites that can be used by humans. But can you also build web sites that are usable by machines? That's where the future lies, and that's what RESTful Web Services shows you how to do. The World Wide Web is the most popular distributed application in history, and Web services and mashups have turned it into a powerful distributed computing platform. But today's web service technologies have lost sight of the simplicity that made the Web successful. They don't work like the Web, and they're missing out on its advantages.
This book puts the "Web" back into web services. It shows how you can connect to the programmable web with the technologies you already use every day. The key is REST, the architectural style that drives the Web. This book:
* Emphasizes the power of basic Web technologies -- the HTTP application protocol, the URI naming standard, and the XML markup language
* Introduces the Resource-Oriented Architecture (ROA), a common-sense set of rules for designing RESTful web services
* Shows how a RESTful design is simpler, more versatile, and more scalable than a design based on Remote Procedure Calls (RPC)
* Includes real-world examples of RESTful web services, like Amazon's Simple Storage Service and the Atom Publishing Protocol
* Discusses web service clients for popular programming languages
* Shows how to implement RESTful services in three popular frameworks -- Ruby on Rails, Restlet (for Java), and Django (for Python)
* Focuses on practical issues: how to design and implement RESTful web services and clients
This is the first book that applies the REST design philosophy to real web services. It sets down the best practices you need to make your design a success, and the techniques you need to turn your design into working code. You can harness the power of the Web for programmable applications: you just have to work with the Web instead of against it. This book shows you how.
......(更多)
Leonard Richardson () is the author of the Ruby Cookbook (O'Reilly) and of several open source libraries, including Beautiful Soup. A California native, he currently lives in New York.
Sam Ruby is a prominent software developer who has made significant contributions to the many of the Apache Software Foundation's open source projects, and to the standardization of web feeds via his involvement with the Atom web feed standard and the popular Feed Validator web service.He currently holds a Senior Technical Staff Member position in the Emerging Technologies Group of IBM. He resides in Raleigh, North Carolina.
......(更多)
Foreword xi
Preface xiii
1. The Programmable Web and Its Inhabitants 1
Kinds of Things on the Programmable Web 4
HTTP: Documents in Envelopes 5
Method Information 8
Scoping Information 11
The Competing Architectures 13
Technologies on the Programmable Web 18
Leftover Terminology 20
2. 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
3. What Makes RESTful Services Different? 49
Introducing the Simple Storage Service 49
Object-Oriented Design of S3 50
Resources 52
HTTP Response Codes 54
An S3 Client 55
Request Signing and Access Control 64
Using the S3 Client Library 70
Clients Made Transparent with ActiveResource 71
Parting Words 77
4. The Resource-Oriented Architecture 79
Resource-Oriented What Now? 79
What’s a Resource? 81
URIs 81
Addressability 84
Statelessness 86
Representations 91
Links and Connectedness 94
The Uniform Interface 96
That’s It! 105
5. Designing Read-Only Resource-Oriented Services 107
Resource Design 108
Turning Requirements Into Read-Only Resources 109
Figure Out the Data Set 110
Split the Data Set into Resources 112
Name the Resources 117
Design Your Representations 123
Link the Resources to Each Other 135
The HTTP Response 137
Conclusion 140
6. Designing Read/Write Resource-Oriented Services 143
User Accounts as Resources 144
Custom Places 157
A Look Back at the Map Service 165
7. A Service Implementation 167
A Social Bookmarking Web Service 167
Figuring Out the Data Set 168
Resource Design 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
What Might Go Wrong? 187
Controller Code 188
Model Code 205
What Does the Client Need to Know? 209
8. REST and ROA Best Practices 215
Resource-Oriented Basics 215
The Generic ROA Procedure 216
Addressability 216
State and Statelessness 217
Connectedness 218
The Uniform Interface 218
This Stuff Matters 221
Resource Design 227
URI Design 233
Outgoing Representations 234
Incoming Representations 234
Service Versioning 235
Permanent URIs Versus Readable URIs 236
Standard Features of HTTP 237
Faking PUT and DELETE 251
The Trouble with Cookies 252
Why Should a User Trust the HTTP Client? 253
9. The Building Blocks of Services 259
Representation Formats 259
Prepackaged Control Flows 272
Hypermedia Technologies 284
10. The Resource-Oriented Architecture Versus Big Web Services 299
What Problems Are Big Web Services Trying to Solve? 300
SOAP 300
WSDL 304
UDDI 309
Security 310
Reliable Messaging 311
Transactions 312
BPEL, ESB, and SOA 313
Conclusion 314
11. Ajax Applications as REST Clients 315
From AJAX to Ajax 315
The Ajax Architecture 316
A del.icio.us Example 317
The Advantages of Ajax 320
The Disadvantages of Ajax 321
REST Goes Better 322
Making the Request 323
Handling the Response 324
JSON 325
Don’t Bogart the Benefits of REST 326
Cross-Browser Issues and Ajax Libraries 327
Subverting the Browser Security Model 331
12. Frameworks for RESTful Services 339
Ruby on Rails 339
Restlet 343
Django 355
A. Some Resources for REST and Some RESTful Resources 365
B. The HTTP Response Code Top 42 371
C. The HTTP Header Top Infinity 389
Index 409
......(更多)
对于一个REST式Web服务,它会在HTTP方法里寻找方法信息,在URI里寻找作用域信息。
但是,REST并不是一种架构,而是一组设计原则。你可以讲“在遵守这些原则方面,一个架构做得比另一个架构好”,但是你不能讲“REST架构”,因为不存在一个叫“REST架构”的东西。
......(更多)