410 likes | 617 Views
Aleph : X-Server 接口简介及应用实例 周磊 2014-6. 内容. X-server 简介 入门 权限控制 转换 机制( Translate ) 常用 X-Services 应用实例 : 书目相关接口 读者相关接口 馆员认证接口 更新读者接口. 内容. X-server 简介 入门 权限控制 转换机制( Translate ) 常用 X-Services 样例 : 书目相关接口 读者相关接口 馆员认证接口 更新读者接口. X-server 简介 – 1 . 基于 URL/XML 的 API 接口
E N D
内容 X-server 简介 • 入门 • 权限控制 • 转换机制(Translate) 常用X-Services应用实例: • 书目相关接口 • 读者相关接口 • 馆员认证接口 • 更新读者接口
内容 X-server 简介 • 入门 • 权限控制 • 转换机制(Translate) 常用 X-Services样例: • 书目相关接口 • 读者相关接口 • 馆员认证接口 • 更新读者接口
X-server 简介 – 1 • 基于 URL/XML 的API接口 • 应用于Exlibris产品之间及与Exlibris产品与外部应用系统之间进行互操作 • Ex Libris 产品例如Metalib , Verde, PDS, Web ILL 都会用到Aleph的X-Server • 第三方应用系统如一卡通系统、门禁系统、电子阅览室系统、自助办证、移动服务、短信服务等 • Aleph本地开发模块:APSM、APSS、AOMS、AIMS、APMS、WebCIR等
X-server 简介 – 2 • 接口返回有层级关系的结构化XML格式数据 • 易于理解 • 有大量商用解析器可直接使用 XML Client GUI Client Proprietary format XML Browser Aleph HTML
X-Server 简介 – 3 调用语法 http://<server>:<port>/X?op=<servicename>&<param_name>=<param_value> • Port就是OPAC的端口。 • 通常使用GET机制发送请求 • 但对于update-bor,update-doc等接口使用POST机制发送请求
样例1 – 查找 • 输入: http://202.198.141.86:8992/X?op=find&request=wti=oracle&base=whu01 • 基地址: IP:Port/X? • 接口名: op=find • 参数: &request=wti=oracle • 参数: &base=whu01 • 输出:
样例2 – 读者认证 http://202.198.141.86:8992/X?op=bor-auth&id=ID51&verification=1234
ALEPH 500系统 X-service 接口 • 查询、排序、显示 • 书目记录创建、更新 • 联编异构系统上载书目、馆藏 • 馆藏信息查询、更新 • 读者认证、读者查询、读者记录创建、更新、删除 • 借、还、续借、预约、现金事务处理 • 订单修改、订单转移、订单删除 • 图书封面、热门信息推送 • 短信通知服务接口
内容 X-server 简介 • 入门 • 权限控制 • 转换机制(Translate) 常用 X-Services样例: • 书目相关接口 • 读者相关接口 • 馆员认证接口 • 更新读者接口
X-server 权限控制 • IP控制 • $alephe_tab/server_ip_allowed • 账号控制 • user_name • user_password
权限控制 – 账号控制 – 1 • 每个接口都对应一项工作人员权限 • 系统设置缺省账号WWW-X/WWW-X。该账号的权限就是匿名X-server用户的权限。 • find, find-doc和present 接口完全开放 • 注意: 如果修改了WWW-X用户的密码,就取消了匿名访问。同时,可以通过增减WWW-X用户的账号权限来调整匿名用户的权限。
权限控制 – 账户控制 -2 • 可以为不同的用户配置不同的权限
权限控制 – 账户控制 – 3 • 可以有两种方式调用先前创建的用户:方法 1:在提交url接口里,增加 user_name和 user_password两个参数。 • 例如: • 测试账户:WWW-TEST/TESThttp://202.198.141.86:8992/X?op=bor-auth_valid&id=ID51&verification=1234&user_name=WWW-TEST&user_password=TEST
权限控制 – 账户控制 – 4 • 不带user_name,user_password的话就校验WWW-X用户的权限:http://202.198.141.86:8992/X?op=bor-auth_valid&id=ID51&verification=1234
权限控制 – 账户控制 – 5 • 方法 2:1) 先带”user_name”,”user_password” 参数调用“login” 接口2) 如果账户验证通过,X-server 会返回一串 session-ID 3) 在之后调用X-server 的时候都加上 “session” 参数,它的值就是这串session-ID值。样例:1) http://202.198.141.86:8992/X?op=login&user_name=www-test&user_password=test&library=whu50 2) http://202.198.141.86:8992/X?op=bor-auth_valid&id=ID51&verification=1234&session=UU3H9FRDJJUXER7DJCALEU1285HALFKLL7ENIGU9QD28XU2KKE • 推荐采用第二种方法,因为第一种方法每次调用会产生不同的session-id,占用license资源。
内容 X-server 简介 • 入门 • 权限控制 • 转换机制(Translate) 常用 X-Services样例: • 书目相关接口 • 读者相关接口 • 馆员认证接口 • 更新读者接口
转换机制 Translate • 每个输出都会经过转换 • 转换机制可以针对tag或数据。可以屏蔽或改变一些tag,或者调整数据显示格式及内容。 • 有两种不同的转换机制:1) 在$alephe_root/www_x_lng/目录下有一系列的*trn文件。这个可以处理数据的显示格式及内容2) 在$alephe_root/www_x_lng/目录下有一系列的*tag文件。可以屏蔽一些字段,或转换字段名 • 特别的,对于bor-info接口,还有一个过滤机制 filter-mechanism
转换机制 – trn – 1 • 对于所有接口,都会调用global.trn 和<service-name>.trn • DATE 把数字转换为日期格式 • SUB-LIB 把分馆代码转换为分馆名称 • PC-TAB-EXP 根据pc_tab_exp_field.lng参数表,把代码转换为描述 • TEXT 直接根据第4列参数的内容做转换 • DECIMAL 增加小数点 • NONE 不做转换
转换机制 – trn – 2 • 以bor-info为例http://202.198.141.86:8992/X?op=bor-info&id=6666&session=UU3H9FRDJJUXER7DJCALEU1285HALFKLL7ENIGU9QD28XU2KKE返回:<bor-info> + <z303> […] <z303-home-library>武大馆</z303-home-library> <z303-birth-date>08/11/1973</z303-birth-date> </z303> <z304> […] </z304> <z305> <z305-bor-status>教职工</z305-bor-status> </z305> <z31> <z31-sum>(10.00)</z31-sum> </z31> </bor-info>
转换机制 – tag – 1 • 对于所有接口,都会调用global.tag 和<service-name>.tag • Tag转换机制主要用于三个目的: • 改变标签(tag)的标题 • 屏蔽指定tags • 屏蔽数据字段 • 说明: 屏蔽数据能够提高X-server输出的响应时间。
转换机制 – tag – 2 • 例如: 在$alephe_root/www_x_eng/bor-info.tag中设置 z304 DELETEz305-id DELETEz305-sub-library TRANSLATE sublib http://202.198.141.86:8992/X?op=bor-info&id=6666&session=UU3H9FRDJJUXER7DJCALEU1285HALFKLL7ENIGU9QD28XU2KKE 返回信息中就没有z304节点,而z305-sub-library标签也变更为 sublib <bor-info> ... <z305> <sublib>武大馆</sublib> <z305-open-date>26/01/2007</z305-open-date> …
转换机制- filter – 1 • 特别的,对于bor-info接口,有一个filter过滤机制,可以定义那些字段需要显示 • 可以在$alephe_root/www_x_eng中增加一个文件,比如 tab_bor_info_filter,在这个文件中列出来需要显示的字段: 样例:tab_bor_info_filter: Z303-NAME Z304-TELEPHONE
转换机制- filter– 2 • 在bor-info接口里增加参数 &filter_data=<file_name> : • http://202.198.141.86:8992/X?op=bor-info&id=ID51&cash=O&filter_data=tab_bor_info_filter&session=UU3H9FRDJJUXER7DJCALEU1285HALFKLL7ENIGU9QD28XU2KKE 这样只有读者姓名、电话会显示了:
内容 X-server 简介 • 入门 • 权限控制 • 转换机制(Translate) 常用 X-Services样例: • 书目相关接口 • 读者相关接口 • 馆员认证接口 • 更新读者接口
书目检索、排序与显示 - 1 • 查找find • http://202.198.141.86:8992/X?op=find&request=wti=oracle&base=whu01&session=UU3H9FRDJJUXER7DJCALEU1285HALFKLL7ENIGU9QD28XU2KKE • Request参数:检索式 • Base 参数:检索库 • 返回 • Set_number结果集名称 • No_records命中记录数 • No_entries可显示记录数
书目检索、排序与显示 - 2 • 排序sort-set • http://202.198.141.86:8992/X?op=sort_set&library=whu01&set_number=000081&sort_code_1=01&sort_order_1=D&sort_code_2=04&sort_order_2=A&session=UU3H9FRDJJUXER7DJCALEU1285HALFKLL7ENIGU9QD28XU2KKE • sort_code来自书目库的tab_sort参数表,通常是 • 01 年份 • 02 著者 • 03 题名 • 04 索书号/分类号
书目检索、排序与显示 - 3 • 显示 present • http://202.198.141.86:8992/X?op=present&base=whu01&set_number=000081&set_entry=000000001&session=UU3H9FRDJJUXER7DJCALEU1285HALFKLL7ENIGU9QD28XU2KKE 显示一条 • http://202.198.141.86:8992/X?op=present&base=whu01&set_number=000081&set_entry=000000001-00000010&session=UU3H9FRDJJUXER7DJCALEU1285HALFKLL7ENIGU9QD28XU2KKE 显示多条
显示书目的馆藏状态 • 馆藏状态 circ_status • http://202.198.141.86:8992/X?op=circ_status&sys_no=000610238&library=WHU01&session=UU3H9FRDJJUXER7DJCALEU1285HALFKLL7ENIGU9QD28XU2KKE
读者相关接口 - 1 • 读者认证 bor-auth: • http://202.198.141.86:8992/X?op=bor-auth&id=ID51&verification=1234&library=WHU50&session=UU3H9FRDJJUXER7DJCALEU1285HALFKLL7ENIGU9QD28XU2KKE • 如果密码正确,返回读者的z303,z304,z305信息 • 否则返回 <error>Error in Verification</error>
读者相关接口 - 1 • 读者认证 bor-auth-valid: • http://202.198.141.86:8992/X?op=bor-auth_valid&id=ID51&verification=1234&library=WHU50&session=UU3H9FRDJJUXER7DJCALEU1285HALFKLL7ENIGU9QD28XU2KKE • 比bor-auth接口增加了检查读者有效性,在tab_check_circ中定义: • BOR-AUTH check_circ_1_a • BOR-AUTH check_circ_1_c_a • 如果密码正确,且读者证卡有效,返回读者的z303,z304,z305信息 • 否则返回 • <error>验证错误</error> 或 • <error>不是有效读者</error>
读者相关接口 - 2 • 读者信息 bor-info: • http://202.198.141.86:8992/X?op=bor-info&id=ID51&library=WHU50&session=UU3H9FRDJJUXER7DJCALEU1285HALFKLL7ENIGU9QD28XU2KKE • 可以不用密码,返回读者的z303,z304,z305以及外借、预约、现金事务等信息 • 可以通过参数过滤是否显示相关信息 • Loan=N 不显示外借 • Hold=N 不显示预约 • Cash=O 只显示未完成的现金事务 • Format=1显示详细读者信息,包括多个地址信息和多个ID信息
馆员认证 • 馆员认证user-auth • http://202.198.141.86:8992/X?op=user-auth&staff_user=TEST&staff_pass=TEST&library=WHU50&session=UU3H9FRDJJUXER7DJCALEU1285HALFKLL7ENIGU9QD28XU2KKE • 如果认证成功,返回账户基本信息
更新读者记录 - 1 • 更新读者记录 update-bor • 可以新建、更新、删除读者记录 • 采用POST方式,需要做一些脚本 <input type="hidden" name="op" value="update-bor"> <input type="hidden" name=“SESSION" value="UU3H9FRDJJUXER7DJCALEU1285HALFKLL7ENIGU9QD28XU2KKE"> <input type="hidden" name="library" value=“WHU50"> <input type="hidden" name="update_flag" value="Y"> <textarea name="xml_full_req" cols="50" rows="10"></textarea> • 同时准备一个xml_full_req文件,里面存放的xml格式的详细读者信息
更新读者记录 - 2 • Xml_full_req文件内容:
参考文档 • ALEPH 18[1].01 X-Services.pdf • Aleph 500 X-Services -- LOCALIZATION.doc • Aleph 500常用 X-Services列表.doc • 文档中心