Preface |
|
xiii | |
1 From Hypertext to Hyperdata |
|
1 | (14) |
|
|
1 | (3) |
|
Architectural Abstractions |
|
|
2 | (1) |
|
|
3 | (1) |
|
RESTful Programming and Hypermedia |
|
|
4 | (10) |
|
|
5 | (1) |
|
|
5 | (4) |
|
RESTful Interfaces: Hypermedia and Action Controls |
|
|
9 | (5) |
|
|
14 | (1) |
2 Getting Started with Ruby on Rails |
|
15 | (18) |
|
Getting to Know Ruby on Rails |
|
|
15 | (1) |
|
Setting Up Ruby and Rails |
|
|
16 | (4) |
|
|
16 | (1) |
|
|
17 | (3) |
|
|
20 | (1) |
|
The Architecture of a Rails App |
|
|
20 | (11) |
|
|
20 | (2) |
|
Object-Relational Mapping |
|
|
22 | (1) |
|
|
23 | (1) |
|
|
24 | (1) |
|
|
24 | (5) |
|
|
29 | (2) |
|
|
31 | (2) |
3 First Adventures in API Design |
|
33 | (24) |
|
Application Programming Interfaces |
|
|
33 | (2) |
|
|
35 | (5) |
|
|
36 | (6) |
|
|
37 | (3) |
|
Why You Should Use Rails to Build APIs |
|
|
40 | (2) |
|
|
42 | (13) |
|
|
42 | (2) |
|
|
44 | (5) |
|
Coding Controllers and Serializers |
|
|
49 | (4) |
|
|
53 | (2) |
|
|
55 | (2) |
4 The REST of the World |
|
57 | (10) |
|
|
57 | (1) |
|
|
58 | (3) |
|
Testing RESTful Routing in Rails |
|
|
60 | (1) |
|
|
61 | (5) |
|
|
63 | (1) |
|
|
64 | (1) |
|
|
64 | (1) |
|
|
65 | (1) |
|
|
65 | (1) |
|
|
66 | (1) |
5 Designing APIs in RoR |
|
67 | (12) |
|
Hypermedia and Adaptable APIs |
|
|
67 | (3) |
|
|
70 | (2) |
|
Creating Hypermedia Interfaces |
|
|
71 | (1) |
|
Resource-Oriented Thinking |
|
|
72 | (1) |
|
Designing Explorable Resources |
|
|
72 | (1) |
|
|
72 | (1) |
|
The WikiCat Hypermedia API |
|
|
73 | (5) |
|
|
78 | (1) |
6 Asynchronous REST |
|
79 | (14) |
|
Asynchronous RESTful Operations |
|
|
79 | (2) |
|
Asynchronous REST in Rails |
|
|
81 | (10) |
|
Rails Workers and Background Jobs |
|
|
81 | (1) |
|
Creating an Application Skeleton in Three Easy Steps |
|
|
81 | (1) |
|
Uploading Images Through an API Call |
|
|
82 | (4) |
|
Creating Workers and a Jobs Queue |
|
|
86 | (2) |
|
Creating a Resource Queue |
|
|
88 | (3) |
|
|
91 | (1) |
|
|
91 | (1) |
|
|
92 | (1) |
7 Testing RESTful Services |
|
93 | (6) |
|
|
93 | (2) |
|
Mocks, Stubs, Doubles, and Dummies |
|
|
95 | (1) |
|
|
96 | (1) |
|
|
97 | (2) |
8 Microservices and Microapplications |
|
99 | (32) |
|
Basics of SOA and Distributed Systems Design |
|
|
99 | (3) |
|
|
100 | (1) |
|
|
101 | (1) |
|
|
102 | (1) |
|
|
102 | (1) |
|
|
102 | (1) |
|
The Evolutionary Approach |
|
|
103 | (1) |
|
Thinking in Terms of Microapplications and Services |
|
|
104 | (1) |
|
|
105 | (24) |
|
|
106 | (13) |
|
|
119 | (2) |
|
Discovering the /lib Directory |
|
|
121 | (4) |
|
|
125 | (1) |
|
|
125 | (4) |
|
|
129 | (2) |
9 Mapping Data Streams onto an Application UI |
|
131 | (20) |
|
Wanderings in Frontend Land |
|
|
131 | (2) |
|
Rendering and Templating in Rails |
|
|
133 | (1) |
|
Ember.js: A Framework for Creating Ambitious Web Applications |
|
|
134 | (6) |
|
Designed for Application Development |
|
|
135 | (1) |
|
|
136 | (1) |
|
Rails MVC Versus Ember.js MVC |
|
|
137 | (3) |
|
|
140 | (2) |
|
Getting Started with Ember.js |
|
|
140 | (2) |
|
|
142 | (1) |
|
|
143 | (2) |
|
|
145 | (1) |
|
|
146 | (3) |
|
Exploring Walks Through Categories |
|
|
149 | (1) |
|
|
149 | (2) |
10 Deploying an API |
|
151 | (10) |
|
|
151 | (4) |
|
|
152 | (2) |
|
|
154 | (1) |
|
Deploying the Wikipin API on OpenShift |
|
|
155 | (2) |
|
|
156 | (1) |
|
|
157 | (3) |
|
|
160 | (1) |
11 Managing an App Ecosystem |
|
161 | (8) |
|
|
161 | (3) |
|
APIs Are Not Consumer Products |
|
|
162 | (2) |
|
Managing Your Community's Happiness |
|
|
164 | (3) |
|
|
164 | (2) |
|
|
166 | (1) |
|
|
167 | (1) |
|
Data Management and Analytics |
|
|
167 | (1) |
|
|
168 | (1) |
12 Consuming Data Streams: Integrating External APIs in Your Application |
|
169 | (12) |
|
Creating a Weather Service |
|
|
169 | (1) |
|
|
170 | (6) |
|
Adhering to the Terms of Service |
|
|
176 | (1) |
|
|
177 | (3) |
|
|
180 | (1) |
13 Device-Independent Development |
|
181 | (14) |
|
Web Development Is a Broad Term |
|
|
181 | (2) |
|
|
182 | (1) |
|
Streaming Data into a Firefox OS App |
|
|
183 | (2) |
|
Developing an Internet of Things App |
|
|
185 | (9) |
|
Rails on the Raspberry Pi |
|
|
186 | (2) |
|
Creating the Raspboard App |
|
|
188 | (6) |
|
|
194 | (1) |
14 Data Analytics |
|
195 | (20) |
|
Data Comes from Everywhere |
|
|
195 | (1) |
|
Monolithic Versus Microapplication Architectures |
|
|
196 | (3) |
|
Monitor, Optimize, and Enhance |
|
|
199 | (9) |
|
|
200 | (1) |
|
Monitor Request Response Times |
|
|
201 | (1) |
|
|
202 | (2) |
|
Monitor Your Server Diagnostics |
|
|
204 | (3) |
|
Comprehensive Monitoring Solutions |
|
|
207 | (1) |
|
|
208 | (6) |
|
|
210 | (4) |
|
|
214 | (1) |
15 Scaling Gracefully |
|
215 | (18) |
|
|
215 | (3) |
|
Creating a Middleware for Different APIs to Communicate |
|
|
218 | (1) |
|
Configuring a Reverse Proxy with Nginx |
|
|
219 | (4) |
|
|
223 | (1) |
|
|
224 | (2) |
|
|
226 | (4) |
|
Scaling Is Not Necessarily Difficult and Painful |
|
|
230 | (1) |
|
|
231 | (2) |
16 Privacy and Security |
|
233 | (16) |
|
How to Protect User Privacy |
|
|
233 | (4) |
|
|
235 | (1) |
|
|
236 | (1) |
|
Privacy-Enhancing Technologies |
|
|
236 | (1) |
|
|
237 | (3) |
|
Common Sources of Insecurity |
|
|
239 | (1) |
|
|
240 | (8) |
|
|
242 | (4) |
|
Cross-Site Request Forgery |
|
|
246 | (1) |
|
|
247 | (1) |
|
|
247 | (1) |
|
|
247 | (1) |
|
|
247 | (1) |
|
|
248 | (1) |
A HTTP Quick Reference |
|
249 | (16) |
Index |
|
265 | |