Книгафонд API

Общие принципы

Книгафонд API использует стиль REST и предоставляет методы для поиска и просмотра книг.

Все API запросы осуществляются с помощью отправки запросов по адресу:

http://api.knigafund.ru/api/*.{xml,json}

Для доступа к API по HTTP предлагаются XML-, JSON-, JSONP-интерфейсы. Они обеспечивают одинаковую функциональность и используют одни и те же входные параметры.

XML-интерфейс возвращает ответ в виде XML-документа, JSON возвращает JavaScript-объект, JSONP возвращает JSON с callback-функцией с теми же именами и семантикой.

Например, запрос к API может выглядеть так:

Большинство запросов может быть простым HTTP GET. Это удобно, т.к. вы можете проверить запрос просто введя URL в адресную строку браузера.

API key - уникальный ключ необходимый для идентификации пользователя API.

Описание методов

<Тип объектов> <Ресурс> (<Метод HTTP>, <Параметры>)

<Тип объектов> - символический тип возвращаемого значения. Если заканчивается на [], то вернется массив данных.

<Ресурс> - идентификатор запрашиваемого ресурса. Если ресурс содержит часть в виде :object_id, то это означает указатель на изменяемый параметр, например ID книги.

Пример:

books/:id означает, что нужно выполнить запрос <http://api.knigafund.ru/api/books/3954.xml>, где 3954 - ID книги.

<Метод HTTP> - GET, POST, PUT, DELETE

<Параметры> - параметры запроса, разделяются с помощью символа &.

Примеры:

per_page=20

by_section=43

by_section[]=43&by_section[]=44&... - массив параметров

книги раздела: <http://api.knigafund.ru/api/books.xml?by_sections=43>

Методы

Разделы каталога

Список разделов

Section[] sections (GET)

Вывод:

<sections>
  <info>
    <count type="integer">149</count>
  </info>
  <section>
    <books-count type="integer">40</books-count>
    <name>Автодорожный транспорт</name>
    <id type="integer">43</id>
  </section>
  ...
</sections>

Список основных разделов

Section[] sections/main (GET)

Список разделов для скачивания

Section[] sections/downloads (GET)

Информация о разделе

Section sections/:id (GET, id)

Параметры:

Вывод:

<section>
  <books-count type="integer">40</books-count>
  <name>Автодорожный транспорт</name>
  <description>Автодорожный транспорт (автомобильные дороги и автостанции, автомобили...</description>
  <id type="integer">43</id>
</section>

Книги раздела

Book[] sections/:section_id/books (GET, section_id, order_by? = name, per_page? = 10, page? = 1)

Параметры:

Вывод:

<books>
  <info>
    <per-page type="integer">10</per-page>
    <count type="integer">1</count>
    <current-page type="integer">1</current-page>
    <num-pages type="integer">1</num-pages>
  </info>
  <books type="array">
    <book>
      <authors-list>Сельвер П.</authors-list>
      <name>Modern Russian Poetry [русские стихи с параллельным поэтическим переводом на англ.]</name>
      <id type="integer">22355</id>
      <authors type="array">
        <author>
          <name>Сельвер П.</name>
          <id type="integer">10259</id>
        </author>
      </authors>
    </book>
  </books>
</books>

Поиск разделов

Section[] sections/search (GET, query? = nil)

Параметры:

Вывод:

<sections>
  <info>
    <count type="integer">20</count>
    <query>математика</query>
  </info>
  <section>
    <books-count type="integer">40</books-count>
    <name>Автодорожный транспорт</name>
    <id type="integer">43</id>
  </section>
  ...
</sections>

Продукты

Список продуктов

Product[] products (GET)

Вывод:

<products>
  <info>
    <count type="integer">15</count>
  </info>
  <products type="array">
    <product>
      <books-count type="integer">1315</books-count>
      <name>Здравоохранение, Медицинские науки</name>
      <id type="integer">122</id>
    </product>
  ...
  </products>
</products>

Информация о продукте

Product products/:id (GET, id)

Параметры:

Вывод:

<product>
  <books-count type="integer">1315</books-count>
  <name>Здравоохранение, Медицинские науки</name>
  <description>Издания по здравоохранению, медицине и медицинским наукам...</description>
  <id type="integer">122</id>
</product>

Список книг продукта

Book[] products/:product_id/books (GET, product_id, order_by? = name, per_page? = 10, page? = 1)

Параметры:

Вывод:

<books>
  <info>
    <per-page type="integer">10</per-page>
    <count type="integer">1</count>
    <current-page type="integer">1</current-page>
    <num-pages type="integer">1</num-pages>
  </info>
  <books type="array">
    <book>
      <authors-list>Сельвер П.</authors-list>
      <name>Modern Russian Poetry [русские стихи с параллельным поэтическим переводом на англ.]</name>
      <id type="integer">22355</id>
      <authors type="array">
        <author>
          <name>Сельвер П.</name>
          <id type="integer">10259</id>
        </author>
      </authors>
    </book>
  </books>
</books>

Поиск продуктов

Product[] products/search (GET, query? = nil, per_page? = 10, page? = 1)

Параметры:

Авторы

Список авторов

Author[] authors (GET, per_page? = 10, page? = 1)

Параметры:

Вывод:

<authors>
  <info>
    <per-page type="integer">10</per-page>
    <count type="integer">17963</count>
    <current-page type="integer">1</current-page>
    <num-pages type="integer">1797</num-pages>
  </info>
  <authors type="array">
    <author>
      <name>Симон М.А.</name>
      <id type="integer">12226</id>
    </author>
    ...
  </authors>
</authors>

Информация об авторе

Author authors/:id (GET)

Параметры:

Вывод:

<author>
  <books-count type="integer">1</books-count>
  <active-books-count type="integer">1</active-books-count>
  <name>Сельвер П.</name>
  <id type="integer">10259</id>
  <first-name>Paul</first-name>
  <last-name>Selver</last-name>
</author>

Книги автора

Book[] authors/:author_id/books (GET, author_id, order_by? = name, per_page? = 10, page? = 1)

Параметры:

Вывод:

<books>
  <info>
    <per-page type="integer">10</per-page>
    <count type="integer">1</count>
    <current-page type="integer">1</current-page>
    <num-pages type="integer">1</num-pages>
  </info>
  <books type="array">
    <book>
      <authors-list>Сельвер П.</authors-list>
      <name>Modern Russian Poetry [русские стихи с параллельным поэтическим переводом на англ.]</name>
      <id type="integer">22355</id>
      <authors type="array">
        <author>
          <name>Сельвер П.</name>
          <id type="integer">10259</id>
        </author>
      </authors>
    </book>
  </books>
</books>

Поиск авторов

Author[] authors/search (GET, query, per_page? = 10, page? = 1)

Параметры:

Книги

Список книг

Book[] books (GET, by_sections? = [], by_authors? = [], by_products? = [], by_books? = [], order_by?, per_page? = 10, page? = 1)

Параметры:

Вывод:

<books>
  <info>
    <per-page type="integer">10</per-page>
    <count type="integer">789</count>
    <current-page type="integer">1</current-page>
    <num-pages type="integer">79</num-pages>
  </info>
  <books type="array">
    <book>
      <authors-list>Евклид</authors-list>
      <name>"Начала" Евклида с пояснительным введением и толкованиями</name>
      <id type="integer">30556</id>
      <authors type="array">
        <author>
          <name>Евклид</name>
          <id type="integer">13215</id>
        </author>
      </authors>
    </book>
    ...
  </books>
</books>

Поиск книг

Book[] books (GET, query? = nil, ...)

Параметры:

Информация о книге

Book books/:id (GET, id)

Параметры:

Вывод:

<book>
  <authors-list>Евклид</authors-list>
  <name>"Начала" Евклида с пояснительным введением и толкованиями</name>
  <id type="integer">30556</id>
  <authors type="array">
    <author>
      <name>Евклид</name>
      <id type="integer">13215</id>
    </author>
  </authors>
</book>

Сессии (+)

Пользователи (+)

Платежи

Скидки

Акции

Книжная полка (+-)

Корзина

Загрузки

Цитаты (+-)

Конспекты (+-)

Чтение (+-)