Skip to content

Commit 1c8a202

Browse files
NoobTWptxmotc
authored andcommitted
Add Node.js Sample (ptxmotc#3)
* Update README.md * Update JavaScript spelling * Add Node.js example * Update README.md
1 parent e428a33 commit 1c8a202

8 files changed

Lines changed: 101 additions & 6 deletions

File tree

‎.gitignore‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Node.js/node_modules

‎Node.js/package-lock.json‎

Lines changed: 48 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎Node.js/package.json‎

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
{
2+
"name": "ptx-sample",
3+
"version": "1.0.0",
4+
"description": "",
5+
"main": "sample.js",
6+
"scripts": {
7+
"test": "echo \"Error: no test specified\" && exit 1"
8+
},
9+
"author": "NoobTW",
10+
"license": "MIT",
11+
"dependencies": {
12+
"axios": "^0.17.1",
13+
"jssha": "^2.3.1"
14+
}
15+
}

‎Node.js/sample.js‎

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
const axios = require('axios');
2+
const jsSHA = require('jssha');
3+
4+
const getAuthorizationHeader = function() {
5+
var AppID = 'FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF';
6+
var AppKey = 'FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF';
7+
8+
var GMTString = new Date().toGMTString();
9+
var ShaObj = new jsSHA('SHA-1', 'TEXT');
10+
ShaObj.setHMACKey(AppKey, 'TEXT');
11+
ShaObj.update('x-date: ' + GMTString);
12+
var HMAC = ShaObj.getHMAC('B64');
13+
var Authorization = 'hmac username=\"' + AppID + '\", algorithm=\"hmac-sha1\", headers=\"x-date\", signature=\"' + HMAC + '\"';
14+
15+
return { 'Authorization': Authorization, 'X-Date': GMTString};
16+
}
17+
18+
axios.get('http://ptx.transportdata.tw/MOTC/v2/Rail/TRA/Station?$top=10&$format=JSON', { // 欲呼叫之API網址(此範例為台鐵車站資料)
19+
headers: getAuthorizationHeader(),
20+
})
21+
.then(function(response){
22+
console.log(response.data);
23+
});

‎README.md‎

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,26 @@
22

33
---
44

5-
為加速開發者能快速使用公共運輸資訊整合流通服務平台(PTX)開放之旅運資料服務,將提供不同程式語言的範例程式碼提供開發者下載,於開發環境開啟後即可依範例程式碼自行擴充,降低學習曲線。
5+
為加速開發者能快速使用公共運輸資訊整合流通服務平台(PTX)開放之旅運資料服務,將提供不同程式語言的範例程式碼提供開發者下載,於開發環境開啟後即可依範例程式碼自行擴充,降低學習曲線。
66

77
- 詳細說明機制可參考[資料服務使用說明文件](https://gist.github.com/ptxmotc/383118204ecf7192bdf96bc0197bb981)內之**API 認證授權機制**段落
88

9-
- 如何使用HMAC 機制:[影片教學請點我](https://www.youtube.com/watch?v=m6mjfnvfeZE&feature=youtu.be)
9+
- 如何使用HMAC 機制:[影片教學請點我](https://www.youtube.com/watch?v=m6mjfnvfeZE&feature=youtu.be)
1010

11-
- 使用程式(如:C#、Java、JavaScript等)取得資料時,請記得加入HTTP Header設定(Accept-Encoding: gzip, deflate),可有效減傳輸量。
11+
- 使用程式(如:C#、Java、JavaScript 等)取得資料時,請記得加入 HTTP Header 設定 (Accept-Encoding: gzip, deflate),可有效減傳輸量。
1212

13-
除PTX所提供之java、javascript及.NET範例程式碼外,PTX會員SHI HAO WANG及Benyi也提供不同種程式語言之範例程式碼供使用者作參考。
13+
## 各種語言教學範例
1414

15-
- CSharp 與 .NET Standard 2.0範例程式碼 (txstudio提供):[請點我](https://github.com/txstudio/ptx-api-authorize-httpclient-sample)
15+
- [ASP.NET](/ASP.NET)
16+
- [Java](/Java)
17+
- [JavaScript](/JavaScript)
18+
- [Node.js](/Node.js)
1619

17-
- PHP範例程式碼 (會員Benyi提供):[請點我](https://gist.github.com/banqhsia/e157a68f730785c0727481d57e5325e0)
20+
## 其他語言範例
1821

22+
除PTX所提供之 Java、JavaScript及 .NET 範例程式碼外,PTX 會員 SHI HAO WANG 及 Benyi 也提供不同種程式語言之範例程式碼供使用者作參考。
23+
24+
- CSharp 與 .NET Standard 2.0 範例程式碼(txstudio提供):[請點我](https://github.com/txstudio/ptx-api-authorize-httpclient-sample)
25+
26+
- PHP 範例程式碼(會員Benyi提供):[請點我](https://gist.github.com/banqhsia/e157a68f730785c0727481d57e5325e0)
1927

0 commit comments

Comments
 (0)