Проект

Общее

Профиль

Руководство пользователя » История » Версия 27

Rustam Usmanov, 01.12.2015 12:31

1 1 Rustam Usmanov
h1. Руководство пользователя
2 2 Rustam Usmanov
3 14 Rustam Usmanov
{{toc}}
4
5 21 Rustam Usmanov
h2. Получение списка баз данных, поддерживаемых сервером
6
7 22 Rustam Usmanov
Получение списка баз данных, поддерживаемых сервером, осуществляется по протоколу "WebDAV":http://tools.ietf.org/html/rfc4918. Запрос отправляется методом PROPFIND по адресу "/db" относительно корневого URL Web-сервисов. Поддерживаются выдача значений двух свойств БД:
8 23 Rustam Usmanov
* *displayname* - название БД
9
* *resourcetype* - тип ресурса (постоянное значение "collection")
10 22 Rustam Usmanov
11 1 Rustam Usmanov
h2. Получение метаданных базы данных
12
13 23 Rustam Usmanov
Получение метаданных базы данных, осуществляется по протоколу "SRU 2.0":http://www.loc.gov/standards/sru/sru-2-0.html (сервис Explain). Запрос отправляется методом GET по адресу "/db/name" относительно корневого URL Web-сервисов, где name - название БД, метаданные для которой требуется получить. В ответной записи Explain поддерживается выдача следующих элементов метаданных:
14
* *indexInfo/set/@identifier* - идентификатор набора поисковых атрибутов
15
* *recordInfo/recordSyntax/@identifier* - идентификатор основного формата записей
16 21 Rustam Usmanov
17 13 Rustam Usmanov
h2. Поиск и извлечение записей
18
19 27 Rustam Usmanov
Поиск и извлечение записей осуществляются по протоколу "SRU 2.0":http://www.loc.gov/standards/sru/sru-2-0.html, а также непосредственно по ключу записи. Поддерживаются следующие возможности SRU:
20 16 Rustam Usmanov
* Язык запросов "PQF":http://www.indexdata.com/yaz/doc/tools.html#PQF (*queryType=pqf*) - для работы со всеми БД Руслан.
21 26 Rustam Usmanov
* Язык запросов "CQL":http://www.loc.gov/standards/sru/cql/spec.html - в т.ч. для работы с результирующим множеством (например, *query=cql.resultSetId=default*).
22 16 Rustam Usmanov
* Одновременное использование нескольких результирующих множеств. Создание и удаление результирующих множеств осуществляется сервисом автоматически. При отсутствии в запросе на поиск параметра *resultSetTTL* создается результирующее множество с именем ??default??. В противном случае создается результирующее множество с уникальным именем.
23
* Значения ??string?? и ??xml?? параметра *recordXMLEscaping*.
24
* Ответные сообщения в форматах XML и JSON. Запрос того или иного формата осуществляется при помощи заголовка HTTP *Accept* - соотв. поддерживаются значения ??application/xml??, ??application/json??.
25
* Извлечение записей в схеме OPAC - для этого следует использовать заголовок HTTP *Accept* со значением ??application/opac+xml?? либо ??application/opac+json??.
26 18 Rustam Usmanov
* Извлечение метаданных БД (Explain).
27 13 Rustam Usmanov
28 20 Rustam Usmanov
Запрос отправляется методом 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).
29 17 Rustam Usmanov
30 1 Rustam Usmanov
Для работы с внешними источниками данных в качестве названия БД можно использовать 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*).
31 27 Rustam Usmanov
32
h2. Работа с конкретной записью
33
34
Любая запись, поддерживаемая сервером, имеет 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).
35
При работе с записью по URL можно использовать следующие методы HTTP:
36
* GET - для извлечения записи.
37
* DELETE - для удаления записи.
38
* PUT - для создания или обновления записи. Если запись с указанным в URL ключом не существует, то будет создана новая запись. В противном случае будет обновлена имеющаяся. При создании новой записи сервер Руслан самостоятельно генерирует ключ записи. Поэтому при успешном создании записи её URL указывается в ответе HTTP со статусом 303 See Other.
39
* LOCK - для блокировки (защиты от изменений другими пользователями) записи.
40
* UNLOCK - для разблокировки записи.
41 24 Rustam Usmanov
42 3 Rustam Usmanov
h2. Заказ документа (бронирование, заказ копии)
43 1 Rustam Usmanov
44 5 Rustam Usmanov
Заказ документа осуществляется в соответствии с NISO Circulation Interchange Protocol (NCIP) v. 2.0.2. Запрос отправляется методом POST по адресу "ncip" относительно корневого URL Web-сервисов (например, http://testbed.ruslan.ru:8080/rrs-web/ncip).
45 3 Rustam Usmanov
46 6 Rustam Usmanov
h3. Входные параметры (обязательные)
47 7 Rustam Usmanov
48 16 Rustam Usmanov
* Идентификатор пользователя, от имени которого осуществляется заказ - *UserId/UserIdentifierValue*.
49
* Идентификатор библиографической записи, описывающей объект заказа - *BibliographicId/BibliographicRecordId/BibliographicRecordIdentifier*.
50
* Идентификатор заказываемой услуги - *RequestType*. Значения: ??Hold?? - бронирование, ??Non-returnable Copy?? - копия.
51
* Область применения запроса - *RequestScopeType*. Значения: ??Bibliographic Item?? - любой экземпляр, ??Item?? - конкретный экземпляр.
52
* Идентификатор места выдачи заказа - *PickupLocation*.
53
* Идентификатор домашней организации пользователя - *UserId/AgencyId*.
54
* Идентификатор организации-держателя заказываемого документа - *BibliographicId/BibliographicRecordId/AgencyId*.
55 6 Rustam Usmanov
56 8 Rustam Usmanov
h3. Выходные параметры (обязательные)
57
58 16 Rustam Usmanov
* Идентификатор пользователя, от имени которого осуществляется заказ - *UserId/UserIdentifierValue*.
59
* Идентификатор заказываемой услуги - *RequestType*. Значения: ??Hold?? - бронирование, ??Non-returnable Copy?? - копия.
60
* Область применения запроса - *RequestScopeType*. Значения: ??Bibliographic Item?? - любой экземпляр, ??Item?? - конкретный экземпляр.
61
* Идентификатор заказа - *RequestId/RequestIdentifierValue*. Является ключом записи на заказ в БД заказов.
62
* Идентификатор домашней организации пользователя - *UserId/AgencyId*.
63
* Сведения о проблемах возникших в процессе обработки запроса - *Problem*.
64 8 Rustam Usmanov
65 9 Rustam Usmanov
Запрос XML:
66 1 Rustam Usmanov
<pre><code class="xml">
67
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
68
<ns1:NCIPMessage xmlns:ns1="http://www.niso.org/2008/ncip">
69
  <ns1:RequestItem>
70
    <ns1:UserId>
71
      <ns1:AgencyId>19013582</ns1:AgencyId>
72
      <ns1:UserIdentifierValue>sip</ns1:UserIdentifierValue>
73
    </ns1:UserId>
74
    <ns1:BibliographicId>
75
      <ns1:BibliographicRecordId>
76
        <ns1:BibliographicRecordIdentifier>RU\SPSTU\books\241</ns1:BibliographicRecordIdentifier>
77
        <ns1:AgencyId>19013582</ns1:AgencyId>
78
      </ns1:BibliographicRecordId>
79
    </ns1:BibliographicId>
80
    <ns1:RequestType ns1:Scheme="http://www.niso.org/ncip/v1_0/imp1/schemes/requesttype/requesttype.scm">Hold</ns1:RequestType>
81
    <ns1:RequestScopeType ns1:Scheme="http://www.niso.org/ncip/v1_0/imp1/schemes/requestscopetype/requestscopetype.scm">Bibliographic Item</ns1:RequestScopeType>
82
    <ns1:PickupLocation>СПбГПУ/ОНЛ/АбонОНЛ</ns1:PickupLocation>
83
  </ns1:RequestItem>
84 3 Rustam Usmanov
</ns1:NCIPMessage>
85
</code></pre>
86 1 Rustam Usmanov
87 9 Rustam Usmanov
Запрос JSON:
88
<pre><code class="json">
89
{
90
    "RequestItem": {
91
        "UserId": {
92
            "AgencyId": {
93
                "value": "19013582"
94
            },
95
            "UserIdentifierValue": "002"
96
        },
97
        "BibliographicId": {
98
            "BibliographicRecordId": {
99
                "BibliographicRecordIdentifier": "RU\\SPSTU\\books\\241",
100
                "AgencyId": {
101
                    "value": "19013582"
102
                }
103
            }
104
        },
105
        "RequestType": {
106
            "value": "Hold",
107
            "Scheme": "http://www.niso.org/ncip/v1_0/imp1/schemes/requesttype/requesttype.scm"
108
        },
109
        "RequestScopeType": {
110
            "value": "Bibliographic Item",
111
            "Scheme": "http://www.niso.org/ncip/v1_0/imp1/schemes/requestscopetype/requestscopetype.scm"
112
        },
113
        "PickupLocation": {
114
            "value": "СПбГПУ/ОНЛ/АбонОНЛ"
115
        }
116
    }
117
}
118
</code></pre>
119
120
Ответ XML (неуспешное завершение):
121 3 Rustam Usmanov
<pre><code class="xml">
122
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
123
<ns1:NCIPMessage xmlns:ns1="http://www.niso.org/2008/ncip">
124
  <ns1:RequestItemResponse>
125
    <ns1:Problem>
126
      <ns1:ProblemType>Diagnostic [220] Additional Info : </ns1:ProblemType>
127 1 Rustam Usmanov
      <ns1:ProblemDetail>220: </ns1:ProblemDetail>
128 4 Rustam Usmanov
    </ns1:Problem>
129
  </ns1:RequestItemResponse>
130 1 Rustam Usmanov
</ns1:NCIPMessage>
131
</code></pre>
132
133 9 Rustam Usmanov
Ответ JSON (неуспешное завершение):
134
<pre><code class="json">
135
{
136
    "RequestItemResponse": {
137
        "Problem": {
138
            "ProblemType": {
139
                "value": "Diagnostic [220] Additional Info : "
140
            },
141
            "ProblemDetail": "220: "
142
        }
143
    }
144
}
145
</code></pre>
146
147 11 Rustam Usmanov
Ответ XML (успешное завершение):
148 4 Rustam Usmanov
<pre><code class="xml">
149
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
150
<ns1:NCIPMessage xmlns:ns1="http://www.niso.org/2008/ncip">
151
  <ns1:RequestItemResponse>
152
    <ns1:UserId>
153
      <ns1:AgencyId>19013582</ns1:AgencyId>
154
      <ns1:UserIdentifierValue>sip</ns1:UserIdentifierValue>
155
    </ns1:UserId>
156
    <ns1:RequestType ns1:Scheme="http://www.niso.org/ncip/v1_0/imp1/schemes/requesttype/requesttype.scm">Hold</ns1:RequestType>
157
    <ns1:RequestScopeType ns1:Scheme="http://www.niso.org/ncip/v1_0/imp1/schemes/requestscopetype/requestscopetype.scm">Bibliographic Item</ns1:RequestScopeType>
158
    <ns1:RequestId>
159
      <ns1:RequestIdentifierValue>302</ns1:RequestIdentifierValue>
160 1 Rustam Usmanov
    </ns1:RequestId>
161
  </ns1:RequestItemResponse>
162
</ns1:NCIPMessage>
163 9 Rustam Usmanov
</code></pre>
164
165
Ответ JSON (успешное завершение):
166
<pre><code class="json">
167
{
168
    "RequestItemResponse": {
169
        "UserId": {
170
            "AgencyId": {
171
                "value": "19013582"
172
            },
173
            "UserIdentifierValue": "002"
174
        },
175
        "RequestType": {
176
            "value": "Hold",
177
            "Scheme": "http://www.niso.org/ncip/v1_0/imp1/schemes/requesttype/requesttype.scm"
178
        },
179
        "RequestScopeType": {
180
            "value": "Bibliographic Item",
181
            "Scheme": "http://www.niso.org/ncip/v1_0/imp1/schemes/requestscopetype/requestscopetype.scm"
182
        },
183
        "RequestId": {
184
            "RequestIdentifierValue": "373"
185
        }
186
    }
187
}
188 1 Rustam Usmanov
</code></pre>