该API现已由小甲鱼维护,如有问题,请联系:820226378@qq.com
• 公开URL: http://api.xiyoumobile.com/xiyoulibv2/
请根据下面的介绍获取数据或自行搭建服务器!
使用Node.js Express框架开发的西邮图书馆REST API,通过模拟网站登陆的形式抓取西邮图书馆Web页面并返回JSON或JSONP给访问者,目前仅支持获取用户借阅历史。
默认监听18000端口,部署前请使用 npm install 命令补全依赖包!
百度云挂上去没有作用,所以就没按照百度云上的要求来做。
• JSON请求URL形式为: http://{hostname}:{port}/{api类别}/{api名}?{参数(可选)}
• JSONP请求URL形式为: http://{hostname}:{port}/{api类别}/{api名}?{参数(可选)}&callback={回调函数名},格式错误则会提示NOT_FOUND错误。
• 二级路径: /user
• 支持方法: GET、POST
• 注: 用户相关API除login接口外,其他接口的访问需要附带login接口回传的session,否则返回错误信息。
• 完整路径: http://{hostname}:{port}/user/login
• 必选参数: username(用户名),password(密码)
• 示例代码(C#):
HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create("http://127.0.0.1/user/login"); using (Stream stream = req.GetRequestStream()) { string paramstr = "username=S04111021&password=123"; byte[] bin = Encoding.UTF8.GetBytes(paramstr); stream.write(bin, 0, bin.Length); } HttpWebResponse res = (HttpWebResponse)req.GetResponse(); string ResStr = ""; using (Stream stream = res.GetResponseStream()) { StreamReader reader = new StreamReader(stream); ResStr = reader.ReadToEnd(); }
• 返回格式为JSON,形式如下:
{ "Result":true, "Detail":"JSESSIONID=9795BE0A70AFD7F99435CD129CFD5FDB; Path=/opac_two" }
登陆成功则Result为true,Detail为登陆成功后的Session,再次请求时可能会用到,请注意保存(在使用此Session时请以session=JSESSIONID=9795BE0A70AFD7F99435CD129CFD5FDB;%20Path=/opac_two的形式传入),登陆失败Result则为false,Detail为失败信息。
• 完整路径: http://{hostname}:{port}/user/info
• 支持方法: GET、POST
• 必选参数: session(登陆成功后回传的Session)
• 返回格式为JSON,形式如下:
{ "Result":true, //标识请求是否成功 "Detail": { "ID":"xxxxxxxxx", //学号 "Name":"xxxxxx", //姓名 "From":"2011-09-02", //有效期开始日期 "To":"2015-07-01", //有效期结束日期 "ReaderType":"本科生", //用户类别 "Department":"计科1101", //行政单位 "Debt":0 //欠费金额 } }
• 完整路径: http://{hostname}:{port}/user/history
• 支持方法: GET、POST
• 必选参数: session(登陆成功后回传的Session)
• 返回格式为JSON,形式如下:
{ "Result":true, //标识请求是否成功 "Detail": [ { "Title":"深入浅出Ext JS", //书名 "Barcode":"03455293", //内部条形码 "Type":"续借", //操作类型,分为:借书、续借、还书 "Date":"2014-06-23" //操作日期 }, ... ] }
• 完整路径: http://{hostname}:{port}/user/rent
• 支持方法: GET、POST
• 必选参数: session(登陆成功后回传的Session)
• 返回格式为JSON,形式如下:
{ "Result":true, //标识请求是否成功 "Detail": [ { "Title":"编译原理解题与分析", //书名 "Barcode":"01386243", //图书馆内部条形码 "Department":"通信计算机库(长安校区)", //所在分馆 "State":"本馆续借", //当前状态 "Date":"20140722", //应还日期 "CanRenew":false //是否可续借 "Department_id":"05" //书库ID号,用于续借 "Library_id":"A" //分馆ID号,用于续借 }, ... ] }
• 完整路径: http://{hostname}:{port}/user/renew
• 支持方法: GET、POST
• 必选参数:
- session(登陆成功后回传的Session)
- barcode(查询续借的图书时所获取的图书馆内部条形码)
- department_id(查询续借的图书时所获取的书库ID号)
- library_id(查询续借的图书时所获取的分馆ID号)
• 返回格式为JSON,形式如下:
{ "Result":true, //标识请求是否成功 "Detail": { "2014-08-20" //新的还书日期 } }
• 完整路径: http://{hostname}:{port}/user/favorite
• 支持方法: GET、POST
• 必选参数: session(登陆成功后回传的Session)
• 返回格式为JSON,形式如下:
{ "Result":true, //标识请求是否成功 "Detail": [ { "Title":"21天学通Java",//书名 "Pub":"电子工业出版社",//出版社 "Sort":"TP312JA",//索书号 "Author":"庞永庆,庞丽娟,"//作者 "ISBN":"9787121078972",//条形码 "ID":"01h0019548"//图书馆内控制号 }, ... ] }
• 完整路径: http://{hostname}:{port}/user/favoriteWithImg
• 支持方法: GET、POST
• 必选参数: session(登陆成功后回传的Session)
• 返回格式为JSON,形式如下:
{ "Result":true, //标识请求是否成功 "Detail": [ { "Title":"21天学通Java",//书名 "Pub":"电子工业出版社",//出版社 "Sort":"TP312JA",//索书号 "Author":"庞永庆,庞丽娟,"//作者 "ISBN":"9787121078972",//条形码 "ID":"01h0019548"//图书馆内控制号 "Images"://图片来自豆瓣,可能为null { "small":"https://img2.doubanio.com/spic/s10307479.jpg", "large":"https://img2.doubanio.com/lpic/s10307479.jpg", "medium":"https://img2.doubanio.com/mpic/s10307479.jpg" } }, ... ] }
• 完整路径: http://{hostname}:{port}/user/addFav
• 支持方法: GET、POST
• 必选参数:
- session(登陆成功后回传的Session)
- id(图书馆内控制号)
• 返回格式为字符串,说明如下:
- ADDED_SUCCEED:收藏成功
- ALREADY_IN_FAVORITE:已经收藏过了
- ADDED_FAILED:收藏失败
- USER_NOT_LOGIN:用户未登录(session过期)
- PARAM_ERROR:参数错误,缺少参数
• 完整路径: http://{hostname}:{port}/user/delFav
• 支持方法: GET、POST
• 必选参数:
- session(登陆成功后回传的Session)
- id(图书馆内控制号)
- username(用户名eg:S04111176)
• 返回格式为字符串,说明如下:
- DELETED_SUCCEED:删除成功
- DELETED_FAILED:删除失败
- USER_NOT_LOGIN:用户未登录(session过期)
- PARAM_ERROR:参数错误,缺少参数
• 完整路径: http://{hostname}:{port}/user/modifyPassword
• 支持方法: POST、GET
• 必选参数:
- session (登陆成功后回传的Session)
- username (用户名eg:S04111176)
- password (当前密码)
- newpassword (新密码)
- repassword (确认新密码)
• 返回格式为字符串,说明如下:
- MODIFY_SUCCEED: 修改成功
- INVALID_PASSWORD:旧密码不正确或session不正确或未登录
- UDIFFERENT_PASSWORD:新密码两次输入不一致
- INVALID_ERROR: 其他错误
- PARAM_ERROR:参数错误,缺少参数
• 二级路径: /news
• 注: 新闻公告接口全部可使用GET或POST方法,且不限制参数形式。
• 完整路径: http://{hostname}:{port}/news/getList/{type}/{page}
• 必选参数: type("news"(新闻)、"announce"(公告)供选,其他值则报错) page(所查询的公告页数,超出范围返回最后一页,最新为1,不填报错)
• 返回格式为JSON,形式如下:
{ "Result":true, //标识请求是否成功 "Detail": { "Type":"公告", //当前请求的文章列表类别 "CurrentPage":1, //当前请求的页数 "Pages":7, //总共的页数 "Amount":130, //总数 "Data": //公告详情 [ { "ID":163, //文章ID,用于获取文章详情 "Title":"关于暑假期间我校图书馆电子资源访问方式的通知", //标题 "Date":"2014-07-07" //发布日期 },... ] } }
• 完整路径: http://{hostname}:{port}/news/getDetail/{type}/{format}/{id}
• 必选参数: type("news"(新闻)、"announce"(公告)供选,其他值则报错) format("html"(正文使用HTML格式)、"text"(正文使用纯文本格式)供选,其他值则报错) id(从列表中获取到的新闻或公告的id)
• 返回格式为JSON,形式如下:
{ "Result":true, //标识请求是否成功 "Detail": { "Title":"图书馆召开2014年度电子文献资源议标(询价)会", //标题 "Publisher":"图书馆", //发布者 "Date":"2014-6-25", //发布日期 "Passage":"<p><font>  为了N......" //正文 } }
• 二级路径: /book
• 注: 图书检索接口全部可使用GET或POST方法,但检索关键词中的特殊符号需要进行URL转义!
• 完整路径: http://{hostname}:{port}/book/search
• 必选参数: keyword(关键词,必须对特殊符号,如"#、%、$"等,进行URL转义处理,否则不被识别)
• 可选参数:
wordType(检索词类型,默认为1,即:所有题名,1-9供选,分别对应图书馆的9种检索词类型,即:所有题名、出版社、索书号、作者、标准号、主题词、图书条码、分类号、题名缩拼)
matchMethod(匹配方式,默认为qx,即:前向匹配,qx、mh、jq供选,即:前向匹配、模糊匹配、精确匹配)
recordType(资料类型,默认为all,即:全部,注:图书馆中"所有类型"不可用,供选值为:"all"、"01"、"02"、"03"、"04"、"11"、"12"、"13"、"14"、"c1"、"e1"、"s1"、"z1",对应:全部、中文图书、西文图书、日文图书、俄文图书、中文期刊、西文期刊、日文期刊、俄文期刊、中文报纸、西文报纸、数据库、年鉴)
size(每页返回的最大图书信息条数,默认为20)
page(设置请求的页数,默认为1,超出范围报错)
ordersc(排序顺序,默认为desc,供选:asc为顺序,desc为逆序)
orderby(排序依据,默认为pubdate_date,即:出版年,供选值:pubdate_date(出版年),title(题目),authors(责任者/作者),publisher(出版社),isn(标准号))
images (是否返回带封面图片的数据,0为不返回,1为返回,注:某些图书无图片,则返回null)
• 返回格式为JSON,形式如下:
{ "Result":true, //标识请求是否成功 "Detail": { "Ammount":258, //所查询到的图书信息总数 "CurrentPage":1, //当前页码 "Pages":13, //总页数 "Size":20, //本页图书信息数量 "Keyword":"c#", //检索关键词 "RecordType":"全部", //资料类型 "KeywordType":"所有题名", //检索词类别 "MatchType":"前向匹配", //匹配方式 "OrderBy":"出版年", //排序依据 "OrderSc":"逆序", //排序顺序 "BookData": //图书信息数组 [ { "ID":"01h0079766", //图书馆内部控制号 "Title":"C#5.0入门经典 = Sams teach yourself C# 5.0 in 24 hours ", //书名,题目 "Author":"多曼,刘琦,袁国忠,", //责任者,作者 "Pub":"人民邮电出版社", //出版社 "ISBN":"9787115344236", //标准号 "Year":2014, //出版年 "Sort":"TP312C/1431", //图书馆索书号 "Total":4, //图书馆藏书数量 "Available":2, //可借阅数量 "Images": { // 封面图片(可能为null) "small":"https://img3.doubanio.com/spic/s28002830.jpg", "large":"https://img3.doubanio.com/lpic/s28002830.jpg", "medium":"https://img3.doubanio.com/mpic/s28002830.jpg" } },...... ] } }
• 完整路径: http://{hostname}:{port}/book/detail/id/{id} 或 http://{hostname}:{port}/book/detail/barcode/{barcode}
• 必选参数: id或barcode(控制号或条形码)
• 返回格式为JSON,形式如下:
{ "Result":true, //标识请求是否成功 "Detail": { "ID":"01h0080459",//所查图书的ID "ISBN":"9787115341440", //所查图书的ISBN "SecondTitle":"Object oriented programming of C++", //副标题 "Pub":"北京 :人民邮电出版社 ,2014.2", //出版信息 "Tilte":"C + + 面向对象程序设计 Object oriented programming of C++", //书名、主标题 "Form":"245页 :图 ;26cm", //载体形态 "Author":"宋春花 4主编 吕进来 4主编 马建芬 4编著 程鹏 4编著 王幸民 4编著", //作者 "Sort":"TP312C++", //中图分类号 "Subject":"C语言 --程序设计", //主题 "RentTimes":2, //借阅次数 "FavTimes":0, //收藏次数 "BrowseTimes":1, //浏览次数 "Total":4, //藏书数量 "Avaliable":2, //可借数量 "CirculationInfo": //流通信息数组 [ { "Barcode":"03451696", //条形码 "Sort":"TP312C++/521", //索书号 "Department":"通信计算机库(长安校区)", //所在部门 "Status":"本馆借出", //状态 "Date":"2014/07/21" //应还日期,可借则为null },...... ], "ReferBooks": //相关图书信息数组 [ { "ID":"01h0077946", //控制号 "Title":"C++程序设计基础教程", //书名 "Author":"孙涛," //作者 }, ], "DoubanInfo": //来自豆瓣的图书信息,若豆瓣数据库无该书信息则为null { "Rating": //评分 { "max":10, //满分 "numRaters":2, //评分次数 "average":"0.0", //平均分 "min":0 //最低分 }, "Author": //作者 [ "Pedro Teixeria" ], "PubDate":"2013-12-1", //出版日期 "Binding":"平装", //装订类型 "Pages":"368", //页数 "Images": //封面图片 { "small":"http://img5.douban.com/spic/s27188987.jpg", //小图 "large":"http://img5.douban.com/lpic/s27188987.jpg", //大图 "medium":"http://img5.douban.com/mpic/s27188987.jpg" //中图 }, "Publisher":"清华大学出版社", //出版社 "ISBN10":"7302344418", //10位标准号 "ISBN13":"9787302344414", //13位标准号 "Title":"Node.js高级编程", //书名 "Alt_Title":"Professional Node.js: Building JavaScript-Based Scalable Software", //副标题 "Author_Info":"Pedro Teixeria是一位高产的开源项目程序员..................", //作者简介 "Summary":"Node.js是一种主流框架........................", //图书简介 "Price":"58.00" //价格 } } }
• 完整路径: http://{hostname}:{port}/book/rank
• 支持方法: GET、POST
• 可选参数: type(默认请求'1') size(默认最少为10,最大为100,超出或少于这个范围默认为10)
type字段说明:
'1':借阅排行榜
'2':检索排行榜
'3':收藏排行榜
'4':书评排行榜
'5':查看排行榜
• 返回格式为JSON,形式如下:
{ "Result":true, "Detail":[ { "Rank":"1",//排行 "Title":" 复变函数全程学习指导与解题能力训练",//书名 "Sort":"O174.5",//分类号 "BorNum":"3576",//(借阅、检索、收藏、书评、查看)次数 "ID":"0100044878"//图书馆内控制号 } ...... ] }
注:
1.图书信息字段不固定,有可能会产生Summary(简介),或其他信息不完整情况!
2.建议使用id(控制号)查询图书,以barcode(条形码)查询速度较慢!
失败则在返回内容中,Result字段值为false,Detail字段为错误信息。
账号错误,密码错误或账户不存在:ACCOUNT_ERROR
用户未登陆:USER_NOT_LOGIN
无效的session:SESSION_INVALID
记录为空:NO_RECORD
远程服务器错误:REMOTE_SERVER_ERROR
参数错误:PARAM_ERROR
续借失败:RENEW_FAILED
超出范围:OUT_OF_RANGE