什麼是 API? SOAP? 其他 HTTP API?


Posted by YongChenSu on 2020-12-06

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

參考資源


#程式導師實驗計畫第四期 #前端 #API #SOAP







Related Posts

 Python Table Manners 系列

Python Table Manners 系列

簡明程式解題入門 - 陣列篇 III

簡明程式解題入門 - 陣列篇 III

〈 演算法與資料結構 #1〉Recursion 遞迴函式

〈 演算法與資料結構 #1〉Recursion 遞迴函式


Comments