|
API Description: Request & Response
Communication Concepts
The ISBNdb.com remote access API uses sessionless client-server
architecture in much the same way as do most websites.
Your application, a client in this case, sends a request to the
ISBNdb.com server asking to return some data. The request is self
consistent and does not rely on any previous history, it includes
everything required for the server to produce a response. After the
server processes the request and sends out a response the session ends
-- in fact the next response may be handled by a different server behind
the scenes (as a side note, technically, your application can use
keep-alive mechanism to keep the communication channel up between
sessions -- but each message exchange in such channel is nonetheless
completely independent).
Each request sent to the server includes a couple of variables that you
set to various values depending on the task at hand. Variables can be
classified into three major groups:
- Identification variables -- these identify your account and/or
application to the server. The server implies some limits on how much
requests a given account or application can send. Typically, this sets
a daily limit on the number of requests that gets reset every night
(although custom agreements can override such limits or impose their
own).
- Data set definition variables -- these specify to the server what
data elements your application is interested in. These can include keywords,
collection names, IDs, relations between data, etc. The end result could
be one of more books satisfying some given criteria.
- Response formatting variables -- these define what parts of the data
should be delivered in the response. For instance, for a book this can
specify whether your application is interested in price history, library
data, subject IDs, similar books, etc.
A typical application will almost always supply variables from 1-st and
2-nd groups above.
Access Protocol Specifics
The basics described above stay the same regardless of the actual
protocol used. ISBNdb.com supports or plans to support the following
protocols:
- Web request protocol
- In this protocol you specify your request by fetching a document
from a specific URL and provide variable as a standard CGI
parameters. Here is what the URL usually looks like:
http://isbndb.com/api/books.xml?access_key=12345678&index1=isbn&value1=0596002068
The response is an XML formatted message similar in essense to this example:
<?xml version="1.0" encoding="UTF-8"?>
<ISBNdb server_time="2005-02-25T23:03:41">
<BookList total_results="1" page_size="10" page_number="1" shown_results="1">
<BookData book_id="somebook" isbn="0123456789">
<Title>Interesting Book</Title>
<TitleLong>Interesting Book: Read it or else..</TitleLong>
<AuthorsText>John Doe</AuthorsText>
<PublisherText>Acme Publishing</PublisherText>
</BookData>
</BookList>
</ISBNdb>
Unless otherwise mentioned, examples and descriptions below are using
this access protocol as the only one publically available at the moment.
- XML-RPC
- Not yet implemented, see below if you are interested in having this
protocol available.
- Formal web services with SOAP and WSDL
- Not yet implemented, see below if you are interested in having this
protocol available.
Note:
If you are interested in having access to the ISBNdb.com's data using
some other access protocols or if you have some other comments or
suggestions -- please contact us. Especially
appreciated are use cases and specific scenarios where a different
approach or protocol would have worked better.
|