# [Web 基礎系列] 聽說你寫過聊天機器人?你真的知道 WebHook,RESTful API?


# Webhook Introduction


# 想像一下假設你現在的 Server 想要做即時更新

但你只會寫一般 Restful API 被動的去接收請求,但無法主動的更新所有 Client.

Webhook 就是在解決這類的問題,達到 Server 能夠主動推撥到另一個 Client
因這一特性 Webhook 也稱作反向 API


# RESTful API

你可能會寫 API,但你有照 RESTful 的風格進行 API 開發嗎?,往下來看看這些特點你是否有做到。


# HTTP Verbs

我們知道製作 API 除了要設置路由之外,請求方法也是一個要點,所謂的請求方法也就是標題所說的 HTTP Verbs

  • POST: 新增資源,也可以做一些特殊要求 C->Create
  • GET: 取得資源 -> Read
  • PUT: 更新資源 -> Update
  • PATCH: 更新部分資源內容 -> Update
  • DELETE: 刪除資源 ->Delete
  • HEAD: 取得 HTTP Header

其中 GET,HEAD 由於實際上都是讀取資源並不會去動到 Server Resource


# RESTful API 相關規範

由於 HTTP 是無狀態的通訊協定,一件事情不應該分成兩條 API 組成
參數樣式盡量應保持一致
HATEOAS (Hypermedia as the engine of application state) 應用程式狀態引擎超媒體


# URI Nouns

URI: Uniform Resource Identifier,統一資源標識符
URL: Uniform Resource Locator 統一資源定位符

URI = [Prefix] +API Endpoint

URI 設計原則

  • 一般資源用複數名詞
  • 唯一資源用單數名詞
  • 資源層級反映在 URI 上
  • Utility API 設計合理即可
  • URI 建議小寫可用 - _ 分隔但風格要統一

# HTTP Status Code

  • 1XX:Information
  • 2XX:Success
  • 3XX:Redirect
  • 4XX:Client Error
  • 5XX:Server Error

# HTTP Header

在我們發出 HTTP Request 的時候會夾帶一些資訊他會描述在請求的 Header 之中

常見的有

  • Accept 接受資源型態
  • Authorization 認證資訊

# HTTP Body

常見格式 JSON、XML