簡介 ALEPH API ( X-service, RESTful API 與 web service)

在 EL Common Code Share 篇幅中有介紹ALEPH Open Interface 三種 API,分別是 RESTful API , X-Services 與 ALEPH Web Services。


ALEPH為何會分成三種不同型式的 API ?那我們到底要用哪一種 API 呢?其實,這是跟資訊技術與近來的雲端趨勢的發展也有密切關聯。要了解三種 ALEPH API,需要從了解 ALEPH 圖書館自動化系統架構開始。

何謂X-Server

X-server 是 Ex Libris 多層次架構結構下的一個組成元件,在許多 Ex Libris 的產品中,利用標準 XML 介面連結系統。X-server 之運用與Ex Libris 產品多層次應用系統可分成以下圖示說明:



透過X-server ,可讓 Ex Libris 產品與其它系統利用 URL 輸入語法與XML 輸出語法介接,介面簡單易用。以ALEPH X-server 為例,透過此服務,程式設計者不需要了解ALEPH 的Oracle 資料表架構與欄位,也不需要熟悉系統架構與SQL 語法,只要知道 X-server 有提供哪些服務,這些服務的 URL 輸入語法與 XML 輸出欄位如何應用。

同時,X-server 雖然是透過 URL 傳遞,但在 ALEPH 中也有安全控管的機制,可利用設定 IP、帳號與密碼、可使用的服務進行參數設定,回傳的 XML 也可利用參數設定回傳的欄位內容是否為代碼亦或是對應的參數表的內容,以方便第三方系統在程式設計時,本身不需要再額外建置參數表進行代碼與欄位值的對應。

ALEPH X-server API 可利用的服務有哪些??? 可應用層面又是如何呢??目前 X-server 一類型可分為三大類型,分別是館際互借 ILL 相關服務、書目記錄相關服務與讀者與流通相關服務,除了 ILL 相關服務在國內並沒有使用之外,書目、館藏、讀者、流通相關服務為國內許多客戶廣為使用的 API。

除了館際互借服務在國內並沒有使用到之外,其它詳細的 ALEPH X-server 列表如下:

項次
服務
服務說明
應用實例或說明
1
Find
書目檢索服務:可利用ALEPH 多樣化的索引欄位進行查詢
新書通報 RSS、所有其它第三方系統欲查詢ALEPH 書目 (ex: 異質檢索系統可不需透過 Z39.50 語法,利用 X-server Find 語法進行查詢)
2
Find-doc
書目內容呈現服務:可利用系統號將該書目記錄的MARC 內容利用 XML 格式呈現

3
Sort-set
書目查詢結果集排序

4
Get-holding
Holding 內容呈現服務:可利用系統號將該顯示書目所連結Holding 的分館、典藏地、索書號

5
Get-sort-codes
獲取圖書館設定排序參數的服務

6
Present
獲取檢索筆數範圍的內容:此服務是透過設定筆數範圍的方式,將檢索筆數的書目內容以OAI XML 方式呈現
為第三方系統截取透過查詢之後截取書目記錄的重要的API
7
Publish-avail
取得館藏現況服務:可利用系統號取得該書目下的館藏是否可取得的服務
探索服務平台呈現館藏獲得現況
8
Item-data
Item-data-multi
取得單冊資訊服務:可利用系統號顯示該書目下所有的單冊資訊、且該單冊是否正被預約中還是在預約架上、是否被外借

9
Read-item
取得特定單冊服務
QR code、架位圖、與RFID 系統介接接口可讀取資料寫入RFID 標籤
10
Create-item
建立單冊服務

11
Update-item
更新單冊服務
RFID 標籤的識別碼若要更新到ALEPH 時的接口
12
Delete-item
刪除單冊服務

13
Binding
裝訂服務

14
Update-doc
即時更新書目服務
若第三方系統需要即時新增、修改、刪除ALEPH書目記錄,書目記錄的更新包括全部更新或是以欄位為單位的更新
15
User-auth
館員帳號密碼認證服務

16
Bor-auth
讀者帳號密碼認證服務

17
Bor-by-key
取得讀者帳號服務:因圖書館同一讀者在ALEPH 可有多組帳號,因此利用此服務可將其它證號一次取得

18
Bor-info
取得讀者資訊服務:包括讀者資訊、住址、權限、目前正在借閱的圖書、罰款、預約等資訊
RFID 預約工作站可透過此功能讓讀者輸入證號與密碼之後,得到讀者預約書資訊
19
Update-bor
新增更新刪除讀者服務
此為非常重要的服務,幾乎每個與校務系統需要即時結合的系統不僅須要能夠讀取讀者的API,更需要能夠異動資料
20
Cir-stat-m
Cic-stat
取得單冊流通現況服務

21
renew
續借服務

22
Hold-req
預約服務

23
Hold-req-cancal
取消預約服務


以上 X-serer API 不僅有取得資訊,亦包括新增、修改、刪除的設計,利用 URL GET 或POST 的方式,任何程式設計者均可以在不了解ALEPH 均可輕鬆撰寫介接程式。

但是,傳統的X-server API 因網路發展日新月異, Ex Libris 也於這幾年發展了雲端探索平台服務的服務,2009年 Ex Libris 以奠基於數位圖書館聯盟之圖書館自動化系統探索平台介面工作小組 (Digital Library Federation’s ILS Discovery Interface Task Group, 簡稱 ILS-DI) 的技術建議下,因應網路服務技術的潮流,開發了一套 ALEPH RESTful API。

要了解 ALEPH RESTful API,先需要了解何謂 RESTful 網路服務。2007 年5月 Leonard Richardson 與 Ruby 撰寫了一本深入淺出說明 RESTful Web Services 。REST 為 (Representational State Transfer) 的縮寫,其概念結合了 HTTP 與 URL兩種協定,將其運用於網路軟體的架構設計。REST 把軟體視為資源,以 URL 定位資源,資源的使用者則可藉由 HTTP 協定所定義的方法操作資源。REST 既然是常用的 Web-Based 應用軟體設計的慣例,因此設計方面就會比較自由,但隨著 REST 於網路服務之應用日漸頻繁,規範與制式的標準就因應而生。因此,RESTful的概念正強調設計方式完全符合 REST 規範。

目前大型雲端運算提供者如Amazon Web Service (AWS) 、Google、SUN 等都支援 RESTful 網路服務。

ALEPH 研發部分看到了這個網路服務的趨勢,因此在研發的時候將以下的概念納入做為 ALEPH RESTful API:


  1. 把ALEPH 應用軟體的功能抽象成分層次、階層的資源。(Application state and functionality are abstracted into hierarchical resources)
  2. 每個資源都有其獨特的URI (Uniform Resource Identifiers) (Every Resource is uniquely addressable using Uniform Resource Identifiers)
  3. 全部的資源共享傳輸的平台,結合 HTTP 中定義的 GET、POST 、PUT 與 DELETE 的語法與 XML 架構回應的設計。(ALL resources share a uniform interface for the transfer of state between client and resource, consisting of * A constrained set of well=defined operations (HTTP methods GET, POST, PUT and DELETE * XML structuured replies)
REST 所意謂的軟體,其實就是資料與資料處理方式的包裝,也就是 OOP 中的個體與物件。

ALEPH RESTful API 透過 JBoss server 運作,有別於X-server 直接利用Apache 埠號,JBoss 與RESTful API 為獨立平台。目前開發完成的資源樹 (Resources tree) 分成如下圖所示:

1. 讀者服務相關資源



2. 書目相關資源



第三種 ALEPH API 為 ALEPH Web Service,跟前兩種 API 不同的地方在於利用 SOAP 標準。目前這個 API 的服務相較於前兩種,比較少人使用,支援的服務也比較少。

簡介完 ALEPH 三種型式的 API與其服務的內容,這些只是要讓煮菜的大師知道冰箱裡有哪些材料與可使用的廚具有哪些,之後可以煮出怎樣的豐盛菜餚,端看您如何發揮了。不過,EL Common 共享平台上已有許多主廚已提供了食譜,請大家盡情享用。(劉育君)

參考資源:
  1. REST and RESTfull Web service (http://blog.roodo.com/rocksaying/archives/5692241.html)
  2. Leonard Richardson , Sam Ruby (2008). RESTful Web Service, O’RILLY.