--- tags: GDSC --- # [基礎系列]聽說你寫過聊天機器人?你真的知道WebHook,RESTful API? --- ## Webhook Introduction ![](https://i.imgur.com/v3Yoewh.png) ---- ### 想像一下假設你現在的Server想要做即時更新 > 但你只會寫一般Restful API被動的去接收請求,但無法主動的更新所有Client. Webhook 就是在解決這類的問題,達到Server能夠主動推撥到另一個Client 因這一特性Webhook也稱作反向API --- ## RESTful API > 你可能會寫API,但你有照RESTful 的風格進行API開發嗎?,往下來看看這些特點你是否有做到。 ![](https://i.imgur.com/XZLYPCp.png) ---- ### 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