Проект

Общее

Профиль

Действия

Руководство пользователя

Получение списка баз данных, поддерживаемых сервером

Получение списка баз данных, поддерживаемых сервером, осуществляется по протоколу WebDAV. Запрос отправляется методом PROPFIND по адресу "/db" относительно корневого URL Web-сервисов. Поддерживаются выдача значений двух свойств БД:
  • displayname - название БД
  • resourcetype - тип ресурса (постоянное значение "collection")

Получение метаданных базы данных

Получение метаданных базы данных, осуществляется по протоколу SRU 2.0 (сервис Explain). Запрос отправляется методом GET по адресу "/db/name" относительно корневого URL Web-сервисов, где name - название БД, метаданные для которой требуется получить. В ответной записи Explain поддерживается выдача следующих элементов метаданных:
  • indexInfo/set/@identifier - идентификатор набора поисковых атрибутов
  • recordInfo/recordSyntax/@identifier - идентификатор основного формата записей

Поиск и извлечение записей

Поиск и извлечение записей осуществляются по протоколу SRU 2.0, а также непосредственно по ключу записи. Поддерживаются следующие возможности SRU:
  • Язык запросов PQF (queryType=pqf) - для работы со всеми БД Руслан.
  • Язык запросов CQL - в т.ч. для работы с результирующим множеством (например, query=cql.resultSetId=default).
  • Одновременное использование нескольких результирующих множеств. Создание и удаление результирующих множеств осуществляется сервисом автоматически. При отсутствии в запросе на поиск параметра resultSetTTL создается результирующее множество с именем default. В противном случае создается результирующее множество с уникальным именем.
  • Значения string и xml параметра recordXMLEscaping.
  • Ответные сообщения в форматах XML и JSON. Запрос того или иного формата осуществляется при помощи заголовка HTTP Accept - соотв. поддерживаются значения application/xml, application/json.
  • Извлечение записей в схеме OPAC - для этого следует использовать заголовок HTTP Accept со значением application/opac+xml либо application/opac+json.
  • Извлечение метаданных БД (Explain).

Запрос отправляется методом GET по адресу "/db/name" относительно корневого URL Web-сервисов, где name - название БД, в которой осуществляется поиск (например, http://testbed.ruslan.ru:8080/rrs-web/db/books). Одновременный поиск в нескольких БД возможен при помощи указания в качестве названия БД нескольких названий БД, соединённых знаком "+" (например, http://testbed.ruslan.ru:8080/rrs-web/db/books+serial).

Для работы с внешними источниками данных в качестве названия БД можно использовать Z39.50 URL (например, http://testbed.ruslan.ru:8080/rrs-web/db/z39.50s://z3950.loc.gov:7090/voyager). При этом надо иметь в виду, что не все источники поддерживают кодировку UTF-8 - в таких случаях кодировку требуется указывать явно при помощи параметра x-z3950-target-charset (например, x-z3950-target-charset=Windows-1251).

Работа с конкретной записью

Любая запись, поддерживаемая сервером, имеет URL вида "/db/db_name/record_id" относительно корневого URL Web-сервисов, где db_name - название БД, record_id - ключ записи (например, http://testbed.ruslan.ru:8080/rrs-web/db/books/RU\SPSTU\books\241).
При работе с записью по URL можно использовать следующие методы HTTP:
  • GET - для извлечения записи.
  • DELETE - для удаления записи.
  • PUT - для создания или обновления записи. Если запись с указанным в URL ключом не существует, то будет создана новая запись. В противном случае будет обновлена имеющаяся. При создании новой записи сервер Руслан самостоятельно генерирует ключ записи. Поэтому при успешном создании записи её URL указывается в ответе HTTP со статусом 303 See Other.
  • LOCK - для блокировки (защиты от изменений другими пользователями) записи.
  • UNLOCK - для разблокировки записи.

Заказ документа (бронирование, заказ копии)

Заказ документа осуществляется в соответствии с NISO Circulation Interchange Protocol (NCIP) v. 2.0.2. Запрос отправляется методом POST по адресу "ncip" относительно корневого URL Web-сервисов (например, http://testbed.ruslan.ru:8080/rrs-web/ncip).

Входные параметры (обязательные)

  • Идентификатор пользователя, от имени которого осуществляется заказ - UserId/UserIdentifierValue.
  • Идентификатор библиографической записи, описывающей объект заказа - BibliographicId/BibliographicRecordId/BibliographicRecordIdentifier.
  • Идентификатор заказываемой услуги - RequestType. Значения: Hold - бронирование, Non-returnable Copy - копия.
  • Область применения запроса - RequestScopeType. Значения: Bibliographic Item - любой экземпляр, Item - конкретный экземпляр.
  • Идентификатор места выдачи заказа - PickupLocation.
  • Идентификатор домашней организации пользователя - UserId/AgencyId.
  • Идентификатор организации-держателя заказываемого документа - BibliographicId/BibliographicRecordId/AgencyId.

Выходные параметры (обязательные)

  • Идентификатор пользователя, от имени которого осуществляется заказ - UserId/UserIdentifierValue.
  • Идентификатор заказываемой услуги - RequestType. Значения: Hold - бронирование, Non-returnable Copy - копия.
  • Область применения запроса - RequestScopeType. Значения: Bibliographic Item - любой экземпляр, Item - конкретный экземпляр.
  • Идентификатор заказа - RequestId/RequestIdentifierValue. Является ключом записи на заказ в БД заказов.
  • Идентификатор домашней организации пользователя - UserId/AgencyId.
  • Сведения о проблемах возникших в процессе обработки запроса - Problem.

Запрос XML:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ns1:NCIPMessage xmlns:ns1="http://www.niso.org/2008/ncip">
  <ns1:RequestItem>
    <ns1:UserId>
      <ns1:AgencyId>19013582</ns1:AgencyId>
      <ns1:UserIdentifierValue>sip</ns1:UserIdentifierValue>
    </ns1:UserId>
    <ns1:BibliographicId>
      <ns1:BibliographicRecordId>
        <ns1:BibliographicRecordIdentifier>RU\SPSTU\books\241</ns1:BibliographicRecordIdentifier>
        <ns1:AgencyId>19013582</ns1:AgencyId>
      </ns1:BibliographicRecordId>
    </ns1:BibliographicId>
    <ns1:RequestType ns1:Scheme="http://www.niso.org/ncip/v1_0/imp1/schemes/requesttype/requesttype.scm">Hold</ns1:RequestType>
    <ns1:RequestScopeType ns1:Scheme="http://www.niso.org/ncip/v1_0/imp1/schemes/requestscopetype/requestscopetype.scm">Bibliographic Item</ns1:RequestScopeType>
    <ns1:PickupLocation>СПбГПУ/ОНЛ/АбонОНЛ</ns1:PickupLocation>
  </ns1:RequestItem>
</ns1:NCIPMessage>

Запрос JSON:

{
    "RequestItem": {
        "UserId": {
            "AgencyId": {
                "value": "19013582" 
            },
            "UserIdentifierValue": "002" 
        },
        "BibliographicId": {
            "BibliographicRecordId": {
                "BibliographicRecordIdentifier": "RU\\SPSTU\\books\\241",
                "AgencyId": {
                    "value": "19013582" 
                }
            }
        },
        "RequestType": {
            "value": "Hold",
            "Scheme": "http://www.niso.org/ncip/v1_0/imp1/schemes/requesttype/requesttype.scm" 
        },
        "RequestScopeType": {
            "value": "Bibliographic Item",
            "Scheme": "http://www.niso.org/ncip/v1_0/imp1/schemes/requestscopetype/requestscopetype.scm" 
        },
        "PickupLocation": {
            "value": "СПбГПУ/ОНЛ/АбонОНЛ" 
        }
    }
}

Ответ XML (неуспешное завершение):

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ns1:NCIPMessage xmlns:ns1="http://www.niso.org/2008/ncip">
  <ns1:RequestItemResponse>
    <ns1:Problem>
      <ns1:ProblemType>Diagnostic [220] Additional Info : </ns1:ProblemType>
      <ns1:ProblemDetail>220: </ns1:ProblemDetail>
    </ns1:Problem>
  </ns1:RequestItemResponse>
</ns1:NCIPMessage>

Ответ JSON (неуспешное завершение):

{
    "RequestItemResponse": {
        "Problem": {
            "ProblemType": {
                "value": "Diagnostic [220] Additional Info : " 
            },
            "ProblemDetail": "220: " 
        }
    }
}

Ответ XML (успешное завершение):

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ns1:NCIPMessage xmlns:ns1="http://www.niso.org/2008/ncip">
  <ns1:RequestItemResponse>
    <ns1:UserId>
      <ns1:AgencyId>19013582</ns1:AgencyId>
      <ns1:UserIdentifierValue>sip</ns1:UserIdentifierValue>
    </ns1:UserId>
    <ns1:RequestType ns1:Scheme="http://www.niso.org/ncip/v1_0/imp1/schemes/requesttype/requesttype.scm">Hold</ns1:RequestType>
    <ns1:RequestScopeType ns1:Scheme="http://www.niso.org/ncip/v1_0/imp1/schemes/requestscopetype/requestscopetype.scm">Bibliographic Item</ns1:RequestScopeType>
    <ns1:RequestId>
      <ns1:RequestIdentifierValue>302</ns1:RequestIdentifierValue>
    </ns1:RequestId>
  </ns1:RequestItemResponse>
</ns1:NCIPMessage>

Ответ JSON (успешное завершение):

{
    "RequestItemResponse": {
        "UserId": {
            "AgencyId": {
                "value": "19013582" 
            },
            "UserIdentifierValue": "002" 
        },
        "RequestType": {
            "value": "Hold",
            "Scheme": "http://www.niso.org/ncip/v1_0/imp1/schemes/requesttype/requesttype.scm" 
        },
        "RequestScopeType": {
            "value": "Bibliographic Item",
            "Scheme": "http://www.niso.org/ncip/v1_0/imp1/schemes/requestscopetype/requestscopetype.scm" 
        },
        "RequestId": {
            "RequestIdentifierValue": "373" 
        }
    }
}

Обновлено Rustam Usmanov почти 9 года назад · 27 изменени(я, ий)