Errata

RESTful Web APIs

Errata for RESTful Web APIs

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 Note Update

Version Location Description Submitted by Date submitted
Ch.2
First paragraph of section entitled, "Collection+JSON"

From the book:
"So, this entity-body document is JSON, right? Not so fast! You can feed this document into a JSON parser without crashing the parser, but that?s not what the web server wants you to do. Here?s what the server said:
Content-Type: application/vnd.collection+json"

Issuing a GET to http://www.youtypeitwepostit.com/api/ actually returns a response with Content-Type: application/json instead of "application/vnd.collection+json" as the book states.

James Nail  Jan 26, 2014 
PDF Page 4
Last paragraph of page

Chapter 1: Surfing the Web page 4 under the heading 'Short Sessions' the paragraph reads 'which is is her current “location”'.

So minor typo, 'is' is repeated.

Smolenski  Feb 22, 2017 
Printed Page 17
1st paragraph

www.youtypeitwepostit.com/api is 404, Page not found

Frank Blau  Sep 06, 2017 
PDF Page 50
Response data at end of page

The instructions tell us to do a wget -S -O - http://www.youtypeitwepostit.com/api/
and then show us the response we should get back.

The response in the book has:
Content-Type: application/vnd.collection+json

The response I get is:
Content-Type: application/json

Anonymous  Jun 24, 2015 
Printed Page 99
Example under: "That Collection+JSON search template is equivalent to this HTML form"

The <input> for the start date has "name" set to "end_date". I believe it should be set to "start_date".

The book has:

<input label="Start date" id="start_state" name="end_data" value=""/>

I believe it should be:

<input label="Start date" id="start_state" name="start_data" value=""/>

Daniel Fava  Jul 30, 2020 
Printed Page 250
3rd paragraph, the one starting with "Some authentication..."

The sentence:

"If a thousand people end up using that client, each will have to set up her own personal user credentials"

should probably read instead as:

"If a thousand people end up using that client, each will have to set up their own personal user credentials"

Daniel Fava  Aug 17, 2020 
Printed Page 326
Expect description paragraph

This section describes the use of the HTTP Expect header. The last sentence states:

"It will send the response code 417 (Expectation Failed) if the client should not "leap.""

I take "leap" to mean continue with the POST/PUT and send the request data. This passage therefore means 417 is a failure code, and the client cannot send the data as described.

My reading of RFC 7231 (https://tools.ietf.org/html/rfc7231#section-5.1.1) leads me to believe that 417 actually means that the system cannot support Expect headers, and thus the client should retry the POST/PUT request and omit the Expect header.

The server may still reject the follow-on request for more specific reasons like 413 Request Too Large or 415 Unsupported Media Type.

Matt Bishop  Jan 31, 2019 
Printed Page 331
If-Range section

This section describes the If-Range header as useful for only re-fetching unchanged ranges of a representation. The last sentence states:

"...it's very unlikely that a client will fetch a few bytes from a larger representation. and then try to fetch only those same bytes later."

My interpretation of RFC 7233 leads me to believe If-Range lets a client download any valid Range they wish, not only one that has been previously fetched. My source is https://tools.ietf.org/html/rfc7233#section-3.2

The second paragraph of this If-Range section states:

The "If-Range" header field allows a client to "short-circuit" the
second request. Informally, its meaning is as follows: if the
representation is unchanged, send me the part(s) that I am requesting
in Range; otherwise, send me the entire representation.

Matt Bishop  Jan 25, 2019 
Other Digital Version 3106
"The profile Media Type Parameter" section

At location 3,106 in the Kindle edition:

> Right now, the only hypermedia types that allow for the profile parameter are Collection+JSON, JSON-LD, HAL, and XHTML (not HTML!).

But Collection+JSON seems not to allow the profile parameter. IANA says:

> Name : Mike Amundsen
>
> Email : mca&amundsen.com
>
> MIME media type name : Application
>
> MIME subtype name : Vendor Tree - vnd.collection+json
>
> Required parameters : n/a
>
> Optional parameters :
> n/a
>
> -- https://www.iana.org/assignments/media-types/application/vnd.collection+json

Yi EungJun  Oct 07, 2017