先感谢之前 PO 在这边后得到不少板友的意见
5/7 时交通部 PTX 通知台铁升级 v3 版 API
这下可不得了,它升级后把车站代码全换了一套
{id:"1001", v3id:"0900", name: "基隆"},
{id:"1005", v3id:"0960", name: "汐止"},
{id:"1031", v3id:"0970", name: "汐科"},
{id:"1006", v3id:"0980", name: "南港"},
{id:"1007", v3id:"0990", name: "松山"},
{id:"1008", v3id:"1000", name: "台北"},
.
.
.
id 是旧版,v3id 是新版
新旧版都是数字,都是四码,有重复的号码,目前无从自动判断
原本用车站代码来当索引写的程式全部要重改
现在我先制作了转换车站代码的两个程式
rocptx.tra.v2Sv3("1008") //执行完会得到 "1000" 将台北站代码转成 v3 版
rocptx.tra.v3Sv2("0990") //执行完会得到 "1007" 将松山站代码转成 v2 版
然后暂时把 v3 版的 Function 放在 rocptx.tra.v3 底下呼叫
可以先用 v2Sv3 把旧版车站代码转成新版后传入 v3 的 Function 内
再将收到的 StationID 用 v3Sv2 转回旧版 id 让原本的程式使用
想请教板友,通常遇到这种资料源把用来当索引的代码全部大改时
在 library 这边开发会怎么处理?
1. library 维持全用旧的代码呼叫,底层实作时再全部进行转换,收到的回应内容
也把 StationID 全部转成旧版代码再 return 给呼叫者
这样用户完全不需要改 code 可以无痛升级继续用 v3 API
2. library 分成 v2 跟 v3 切开来,车站列表资料即使内容相同只有 id 不同
也要建立两份,然后只提供 id 转换 Function,让用户自己呼叫的时候
用转换 Function 把 id 转成对应 v2 或 v3 版的
也就是旧版不动,新版要用自己把所有车站代码转换后呼叫新版 v3 Function
3. library 跟着 API 升级,把所有车站代码都换成新的,强制用户跟着重写 code
所有用 v2 代码操作的 code 都要过 v2Sv3 的 Function 转换后才能正常操作
尴尬的是 PTX 这边 v3 版车站代码改了
可是台铁提供的固定时刻表资料 XML 及 JSON 仍然用的是旧版代码
所以要操作离线查询(从 JSON 档中查时刻表)只能用旧版代码
另外目前有些车站(如彰化)在 v3 API 线上查不到车站资料,已回报请官方修复
有需要操作或玩 v3 版 API 者请更新 dist 内的 ptx.js 或 ptx.min.js
https://github.com/melixyen/rocptx