國高中電腦養成班 - 基礎一 (14)

 

  • (6/22) 第十三週: RESTful API

大綱

RESTful API

Swagger

demo

RESTful API 是什麼?

API 是 

(Application Programming Interface 的縮寫)

讓別人程式可以叫用你提供的 service (服務), 

通常都回傳 JSON 格式的結果, 或 XML 格式

可用 curl 指令測試

也可用Chrome 的 plugin: Postman 來測試

你可以用別人的 API, 也可以提供 API 給別人用, (或手機用)

GraphQL

新方法, 不用 http, https, 但更簡單, 讓 client 或程式端決定回傳值(結果)

* 裡用 GraphQL client 測試結果.

* 只要定義 Schema

* 更適合手機端軟體向 server 索取資料. (因為你可以用程式選擇下載的資料項目, 挑你想顯示的資料就好.)

* 只用 JSON 格式就好.

RESTful API

最常用的 API 介面, 利用 http, https 方法存取資料

 

* 固定寫好回傳值 (client 不能做選擇)

 

* 利用 GET 抓資料

* 利用 PUT 或 POST 更新資料

* 利用 DELETE 刪除資料

* 用 JSON 或 XML 格式

websocket API

即時更新, GraphQL subscription 也是利用 websocket 技術

GET 範例 (取得)

curl -X GET "https://petstore.swagger.io/v2/user/ming"

POST 範例 (新增)

curl -X POST "https://petstore.swagger.io/v2/user" -d "{ \"id\": 100, \"username\": \"ming\", \"firstName\": \"Ming-der\", \"lastName\": \"Wang\", \"email\": \"ming@log4analytics.com\", \"password\": \"asdfasdfadsf\", \"phone\": \"0910006662\", \"userStatus\": 0}"

PUT 範例 (修改)

curl -X PUT "https://petstore.swagger.io/v2/pet" -H "accept: application/json" -H "Content-Type: application/json" -d "{ \"id\": 0, \"category\": { \"id\": 0, \"name\": \"string\" }, \"name\": \"doggie\", \"photoUrls\": [ \"string\" ], \"tags\": [ { \"id\": 0, \"name\": \"string\" } ], \"status\": \"available\"}"

DELETE 範例 (刪除)

curl -X PUT "https://petstore.swagger.io/v2/pet" -H "accept: application/json" -H "Content-Type: application/json" -d "{ \"id\": 0, \"category\": { \"id\": 0, \"name\": \"string\" }, \"name\": \"doggie\", \"photoUrls\": [ \"string\" ], \"tags\": [ { \"id\": 0, \"name\": \"string\" } ], \"status\": \"available\"}"

因為用 http, https

所以會有 return code:

200 正常

404 找不到頁面

50x server errors

 

其他 error codes

swagger

是一個 RESTful API 的定義標準

方便大家測試

Petstore 為例

IBM x-force exchange API 為例

curl -X GET --header 'Accept: application/json' --header 'Authorization: Basic ODExNmFmNzItNGJmNi00YTBlLTk4ZjItN2U2OWNjMzBiMDU0OmZhZDAwNjE5LTk3OGItNDQ1Yy1iNjZlLWJiODE2NDg1YTg3MQ==' 'https://api.xforce.ibmcloud.com/casefiles'

大部分 API 都需要 token 授權碼.

Bitcoin Blockchain API 為例

未來, 人工智慧也都能用

RESTful APIs

其他有 19,802 種 APIs可以到

https://www.programmableweb.com/

網站找, 例如 github, twitter, hotel

 

(例如: travelgatex-hotel 已經開始用 GraphQL)

 

本週作業

試做你的專題程式, 下週 demo 給別組看.

第一組: fork from https://github.com/mingderwang/homeworks-deadline

第二組: server fork from https://github.com/mingderwang/my-audio-server

expo import from https://github.com/mingderwang/audio-recording

第三組: fork from https://github.com/mingderwang/spellingCheck

 

下週(6/29)

每一組專題報告

 

學習心得

Made with Slides.com