API 是什麼?為什麼需要它?
API (Application Programing Interface),應用程式介面。
當別人想要跟你要東西時,因不會直接把資料庫的權限給對方,是根據 API (介面) 讓對方可存取資料,也可限制對方資料的存取權限。而當自己想跟對方要資料時也是透過 API。故透過 API 可讓雙方交換資料。
API 與 Web API (HTTP API) 的差異?
API 不見得需要網路。Web API 則一定需要網路,通常指的是 HTTP API,因透過 HTTP 的形式故稱之。除了 HTTP API 以外,還有許多 protocol 也能進行資料交換。
SDK (software development kit):軟體開發套件。
其他 API
如何串接 API?
拿到 API 資料
// api.js
const request = require('request')
request(
'https://reqres.in/api/users',
function (error, response, body) {
console.log(body)
}
)
node api.js
後即可拿到返回的資料。
引入 process (node 內建的模組)
argv 裡的數字指的是元素的 index,node api.js 3
後即可拿到 users/3 的資料。
const request = require('request')
const process = require('process')
request(
'https://reqres.in/api/users/' + process.argv[2],
function (error, response, body) {
console.log(body)
}
)
用 post 的方式新增 user
而這邊因為是測試用,故不會真的寫入,但顯示的訊息是有成功寫入的。
const request = require('request')
const process = require('process')
request.post(
{ url: 'https://reqres.in/api/users',
form: {
name: 'yc',
job: 'none',
}
},
function (error, response, body) {
console.log(body)
}
)
id 為 513
delete
statusCode:204 代表刪除成功,沒有東西回應。
console.log(body) 的結果是空的。
const request = require('request')
const process = require('process')
request.delete(
'https://reqres.in/api/users/2',
function (error, response, body) {
console.log(response.statusCode) // 204
console.log('body:', body) // 空的
}
)
patch
修改成功 name 變成 hello。
const request = require('request')
const process = require('process')
request.patch(
{
url: 'https://reqres.in/api/users/2',
form: {
name: 'hello'
}
},
function (error, response, body) {
console.log(response.statusCode) // 200
console.log(body) // {"name":"hello","updatedAt":"2020-07-01T12:40:27.402Z"}
}
)
SOAP
Simple Object Access Protocol
除了 API 以外還有其他種跟伺服器溝通的方式,SOAP,資料交換都透過 XML。
node-soap
因不會都自己寫 XML,故透過 node-soap 的幫助:A Soap client and server for node.js,解析底層的 XML 格式,使其變好用一點。
endpoint?
在 SOAP 中,endpoint 是指 URL。web 服務監聽器通過監聽該 URL,獲取請求。
SOAP 以外的 HTTP API
大多數的 Web API 是 HTTP API。
RESful 是什麼?
它不是一個協定,是一種風格,是一種建議。
API 使用說明 (不符合 RESTful)
用 delete
刪除是良好習慣但不是規範,故可用 POST
模擬刪除功能,但壞處是不同工程師有不同命名方式,例如 new_user, created_user, created_new_user。
API 使用說明 (符合 RESTful)
只要符合 RESTful 風格即可稱為 RESTful API。