Errata
Submit your own errata for this product.
The errata list is a list of errors and their corrections that were found after the product was released.
The following errata were submitted by our customers and have not yet been approved or disproved by the author or editor. They solely represent the opinion of the customer.
Color Key: Serious Technical Mistake Minor Technical Mistake Language or formatting error Typo Question
| Version | Location | Description | Submitted By |
|---|---|---|---|
| Printed | Page xvii 2nd paragraph, the last sentance |
"HTTP's weakness is its strength, its simplicity its power." maybe read "HTTP's weakness is its strength, its simplicity (is) its power." |
Anonymous |
| Printed | Page 1 general note |
The note on page 1 states "Every URI on the web is also a URL". This is not true, an URL IS an URI but not all URIs are URLs. |
Anonymous |
| Printed | Page 2 Example 1-2 |
The example - Searching for books with a Ruby script - does not work with the code as is because the dependent library from http://www.caliban.org/ruby/ruby-amazon.shtml has an updated version. Since the API has changed as well, in this new version (4?), getting the example to work for a new person to Ruby is hard. I made some approximations but I don't have it 100% right. I would appreciate if the updated code is posted here. |
Anonymous |
| Printed | Page 2 Example 1-2 |
The very first example - Searching for books with a Ruby script - does not work with the code as is because the dependent library from http://www.caliban.org/ruby/ruby-amazon.shtml has an updated version. Since the API has changed as well, in this new version (4?), getting the example to work for a new person to Ruby is hard. I made some approximations but I don't have it 100% right. I would appreciate if the updated code is po(a)sted here. |
Anonymous |
| Printed | Page 2 last code snippet on page |
The comment says "amazon-book-search.rb", but the next page executes "ruby amazon-search.rb". |
Anonymous |
| Printed | Page 3 First paragraph |
It says "customize the Ruby code with your Access Key ID", however the code actually takes that as a command-line argument. |
Anonymous |
| Printed | Page 5 3rd paragraph, above title "HTTP:Documents in Envelopes" |
The last sentence ... with the term "REST." |
Anonymous |
| Printed | Page 6 Begining on 6th paragraph... and whole book |
The authors use the term headers instead of header fields when refering to HTTP envelopes. I think they should stick to the RFC2616 terminology which is: a header is a block of header fields. |
Anonymous |
| Printed | Page 7 3rd paragraph |
"This response has 11 headers" |
Anonymous |
| Printed | Page 7 5/10ths down the page |
It says "This response has 11 headers", but I actually count 10 of them. |
Anonymous |
| Printed | Page 11 4/10ths and 6/10ths down the page |
It says the method information is "doGoogleSearch" and that that's also found in the SOAPAction HTTP header. However, that header says "urn:GoogleSearchAction". |
Anonymous |
| Printed | Page 16 Example 1-15 |
The example does not match the text that describes it. (Looks like the wrong HTTP snippet was used for the |
Anonymous |
| Printed | Page 16,17 Example 1-15 and subsequent para |
In example 1-15, the authors seem to be making an argument that Flickr's API can also be viewed in RESTful fashion despite resembling an RPC service. I believe they intended the URI in the example to read "GET /photos/tags/penguin HTTP/1.1" rather than the one shown (with the method and key/value pairs embedded). |
Anonymous |
| Printed | Page 31 Code |
I receive an authentication failure: |
Anonymous |
| Printed | Page 31 Example 2-4 |
Related code: |
Anonymous |
| Printed | Page 31 4/10ths down the page |
It says, "I've added two keyword arguments to open::method, which lets...". There should be a space between those two colons. |
Anonymous |
| Printed | Page 32 HTTP feature matrix |
Your ditto marks are not clear to me. It seems that they must be read horizontally, e.g. Net:HTTP provides Basic support for Auth methods, No support for Caching, and Yes support for Proxies. |
Anonymous |
| Printed | Page 36 C# code example |
I've been working in C# lately, so I tried this example first. In a nutshell, https://api.del.icio.us/v1/ |
Anonymous |
| Printed | Page 36 C# code |
I wrote earlier to point out that the C# examples weren't working. I then went for a jog, and as I did it |
Anonymous |
| Printed | Page 50 End of page 50 and beginning of page 51 |
It says "A bucket name can only contain the characters A through Z, a through z, 0 through 9, underscore, period, and dash." However, in the previous paragraph, you suggested using names like "directory/subdirectory/file-object". |
Anonymous |
| Printed | Page 56 |
You map the Amazon "Access Key ID" to @@public_key and the "Secret Access Key" to @@private key in your Authorized module. |
Anonymous |
| Printed | Page 65 2nd paragraph |
The book states that Amazon S3 uses "public-key cryptography" to authenticate requests. This is totally |
Anonymous |
| Printed | Page 67 3/10ths down the page |
It says "# Add it to the header has." I think it meant to say "hash" ;) |
Anonymous |
| Printed | Page 68 Example 3-20 |
I *think* there is an error in the signed_uri method. |
Mike Lutz |
| Printed | Page 109 Bottom list |
The steps "4.) Expose a Subset of a Uniform Interface" and "5.) Design the Representations Accepted from |
Anonymous |
| Printed | Page 119 3rd paragraph |
This is very picky, but... |
Anonymous |
| Printed | Page 119 2nd paragraph |
"I'm going to use a comma to separate latitude and longitude." Then the next paragraph uses semicolon "/v1/Earth/43.9;-103.46..." and semicolon runs rampant throughout chapters 5 and 6. |
Shawn Hoover |
| Printed | Page 125 Example 5-4 |
The closing tag of the XML example -- "maps" -- doesn't match the opening tag "planets". |
Anonymous |
| Printed | Page 125 Example 5-3 |
Says: |
Anonymous |
| Printed | Page 128 First image caption |
Given the established convention of including the zoom level on the portion of the URI containing the map |
Anonymous |
| Printed | Page 128 3rd paragraph |
Given the established convention of including the zoom level on the portion of the URI containing the map |
Anonymous |
| Printed | Page 129 First image caption |
The image caption for Figure 5-2 on page 129 has a typo. The URI should be |
Anonymous |
| Printed | Page 129 First complete paragraph, third line |
"32.37" -> "37.0" (twice) |
Anonymous |
| Printed | Page 131 example 5-8 xml example |
The given xhtml is not well formed. For example the <li> tags are not closed properly. |
Anonymous |
| Printed | Page 131 Example 5-8 |
To confirm and add to an existing report: the XHTML is poorly formed. For example, the opening <dd> tag is missing for the "maps" unnumbered list. |
Anonymous |
| Printed | Page 131 Example 5-8 |
To confirm and add to an existing report: the XHTML is poorly formed. For example, the opening <dd> tag is missing for the "maps" unnumbered list. |
Anonymous |
| Printed | Page 133 Example 5-9 |
The "repeat" attribute on the input element (<input name="show" repeat="template") is astonishing to |
Anonymous |
| Printed | Page 136 Note at the bottom of the page |
The note explains the use of the "repeat" attribute on (X)HTML input elements. While it's true that this |
Anonymous |
| Printed | Page 152 Example 6-2 |
I think "CGI::escape("password=#{password}") should be whatever the Ruby syntax is for "password=" |
Anonymous |
| Printed | Page 153 Example 6-3 |
'<input class="password"' -> '<input type="password"' |
Anonymous |
| Printed | Page 163 Last line |
'<input class="submit" />' -> '<input type="submit" />' |
Anonymous |
| Printed | Page 170 Example 7-1, "create_table" commands for users and bookmarks |
The table definitions for "users" and "bookmarks" are incorrect. The column "user_id" should be in the "users" table, not the "bookmarks" table. Also, in order for the join table "user_bookmarks" to work, the "bookmarks" table should have a primary key column called ""bookmark_id". |
Anonymous |
| Printed | Page 172 mid-page |
"Finally, the __bundles__ API, which lets the authenticated user group similar tags together." |
Anonymous |
| Printed | Page 172 __/recent__?Fetch the most recently posted bookmarks, from all users. |
This is about text font. It should be in italic to be consistent with the context |
Anonymous |
| Printed | Page 174 The User Controller |
It seems that the last sentence below "The User Controller" did not finish yet, as it was ended with a colon. |
Anonymous |
| Printed | Page 179 under "The Leftovers" |
"There's already a solution for this built into HTTP: conditional GET. I cover it briefly in __"Conditional HTTP GET"__ later in this chapter and I'll cover it in more detail in __"Conditional GET,"__ but in this chapter you'll see it implemented. By implementing conditional GET, I can give the time- and bandwidth-saving benefits of posts/update to most of of the resources I'm exposing, not just the single most expensive one." |
Anonymous |
| Printed | Page 182 3rd Paragraph; Example 7-3 |
ruby/ch7/service/config/routes.rb is missing in source archive RESTful_Web_Services_sample_code.zip |
Anonymous |
| Printed | Page 184 1st paragraph |
The book states of page 183, there would be a form encoded request parameter such as: |
Anonymous |
| Printed | Page 192 Example 7-10. application.rb continued: if_found. |
The "user_id_from_username" filter was not mentioned anywhere in the book. |
Anonymous |
| Printed | Page 196 Third line of Example 7-13 |
The "<screen>" element appears to be a mistake. It's never closed, and I couldn't find any such element in |
Anonymous |
| Printed | Page 196 Example 7-13 |
The title tag is not closed properly. |
Anonymous |
| Printed | Page 197 Middle of the second paragraph |
"(defined in the User) model)" -> "(defined in the User model)" |
Anonymous |
| Printed | Page 198 Example 7-15 |
# There was a problem saving the __bookmark__ to the database. |
Anonymous |
| Printed | Page 198 Second paragraph |
"data validation errors fail" -> "data validation fails" |
Anonymous |
| Printed | Page 199 End of the last paragraph of text |
"index and show simply delegate to the show_bookmarks action" does not agree with the code. While index |
Anonymous |
| Printed | Page 199 First paragraph |
"if_found method sends a response code of 404...if the user tries to GET or DELETE a nonexistent user." |
Anonymous |
| Printed | Page 202 Line 10 |
This appears to be a gaping security hole, allowing SQL injection if the user enters carefully crafted values instead of a valid bookmarks.user_id value. But I don't know Ruby or Rails, so perhaps I'm seeing a security issue where none actually exists. Is the "?" in the code really a placeholder for the raw user input, or does Rails automatically sanitize the input that would get spliced into this SQL query? In any event, I would suggest commenting this code to tell the reader either (a) "not to worry, this is not a SQL injection vulnerability," or (b) "we suggest you sanitize user input before inserting it into this SQL query." |
Anonymous |
| Printed | Page 206 2nd Paragraph; Example 7-24. app/models/user.rb |
Digest::SHA1.new(password).to_s |
Anonymous |
| Printed | Page 207 middle |
Digest::MD5.new(new_uri).to_s doesn't work with the current version of Ruby |
Anonymous |
| Printed | Page 211 Top of the page |
It says: |
Anonymous |
| Printed | Page 217 the first sentence of the 4th paragraph |
"In the bookmarking service from Chapter 7, I exposed two representations of a set of bookmarks: a generic XML representation at /v1/users/leonardr/bookmarks.xml, and an __Atome__ representation at /v1/users/leonardr/bookmarks.atom. |
Anonymous |
| Printed | Page 217 3rd paragraph |
HTTP/1.1: |
Aki Björklund |
| Printed | Page 225 middle of page |
"the link text indicate" |
Anonymous |
| Printed | Page 233 3rd paragraph under URI Design |
"Use semicolons when the order doesn't matter: /color-blends/red;blue." |
Anonymous |
| Printed | Page 241 the 3rd paragraph |
qop-auth --> qop=auth |
Anonymous |
| Printed | Page 245 "Printed" output for two requests, near the middle of the page |
The response to the second request has a different Etag than the first. Since the second response |
Anonymous |
| Printed | Page 256 the last sentence of the 5th paragraph |
his --> her |
Anonymous |
| Printed | Page 257 3rd sentence of the 2nd paragraph |
authorization --> authentication |
Anonymous |
| Printed | Page 260 fifth paragraph, sixth sentence |
Lists one of the 15 possible resource relationships as "stylesteet" when it should read "stylesheet" |
Anonymous |
| Printed | Page 279 3rd last line |
The URL in the "Location" header should presumably match the URL in the text on the following page. |
Anonymous |
| Printed | Page 280 1st line |
Delete the initial "<![CDATA[ " before the XML prolog. |
Anonymous |
| Printed | Page 287 5th "paragraph" |
The "name" of the <input> element does not match the name in the resulting search URLs. |
Anonymous |
| Printed | Page 292-4 Example 9-10, 9-12 |
The example wadl file for del.icio.us uses a mix of two different wadl specifications: 20061109 (https:// |
Anonymous |
| Printed | Page 292 2nd paragraph |
It says "v1 inside posts inside recent", however that doesn't match the actual nesting of the tags in the XML. |
Anonymous |
| Printed | Page 305 First complete paragraph (after Example 10-4), penultimate sentence |
"SOAP messages, send over HTTP" -> "SOAP messages, sent over HTTP." |
Anonymous |
| Printed | Page 310 Last paragraph |
"It's possible to prove the originator of a given message was long after it sent, and that the message was |
Anonymous |
| Printed | Page 311 First paragraph without a bullet |
"one-off solutions are possible" -> "one-off solutions are not possible". |
Anonymous |
| Printed | Page 333 First sentence |
The text refers to "the Ajax application delicious-ajax.html," but I don't think the name is used |
Anonymous |
| Printed | Page 337 Code example at the top of the page |
img.setAttribute("title", image["Height"]); |
Anonymous |
| Printed | Page 341 Second bulleted item |
"app/view/welogs/new.rhtml" -> "app/view/weblogs.rhtml" |
Anonymous |
| Printed | Page 341 Last bullet point |
"PUT /weblogs/{id}: Delete a weblog." |
Anonymous |
| Printed | Page 351 Figure 12-2 |
Application box in Fig 12-2 should contain three different resources to match the subsequent code snippet: UserResource, BookmarksResource, and BookmarkResource. The (plural) BookmarksResource is missing from Figure 12-2. |
Bob |
| Printed | Page 353 Example 12-9, near the top of the page |
The indenting of the code in the if statement is inconsistent. |
Anonymous |
| Printed | Page 357 Two thirds of the way down the page, in the paragraph following Example 12-11 |
"users/jacobian/tags/python" should be "users/jacob/tags/python" to match the prose that follows, or the prose should change from "jacob" to "jacobian." |
Anonymous |
| Printed | Page 384 Last line |
'414 ("Request Entity Too Large")' -> '413 ("Request Entity Too Large")' |
Anonymous |
| Printed | Page 391 Accept-Language, 3rd paragraph |
"The client sends an Accept-Charset header" should be "The client sends an Accept-Language header". |
Bruce Sinclair |
| Printed | Page 393 First two "code" sections |
It says "Content-Type: text/plain" and then "Content-Type: text/html" when really they're supposed to be the same. |
Anonymous |
