{"id":27365539,"url":"https://github.com/kewang/webhooks-tw","last_synced_at":"2025-07-02T22:33:11.513Z","repository":{"id":143213836,"uuid":"108730360","full_name":"kewang/webhooks-tw","owner":"kewang","description":"http://www.webhooks.org/ 的維基非官方正體中文翻譯","archived":false,"fork":false,"pushed_at":"2018-01-28T04:00:48.000Z","size":23,"stargazers_count":13,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-13T05:47:13.505Z","etag":null,"topics":["openapi","webhooks"],"latest_commit_sha":null,"homepage":"http://webhooks.kewang.tw","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kewang.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2017-10-29T11:59:19.000Z","updated_at":"2024-12-25T22:37:32.000Z","dependencies_parsed_at":null,"dependency_job_id":"24851cb4-feab-4aac-9d5f-7884ffc63da6","html_url":"https://github.com/kewang/webhooks-tw","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/kewang/webhooks-tw","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kewang%2Fwebhooks-tw","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kewang%2Fwebhooks-tw/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kewang%2Fwebhooks-tw/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kewang%2Fwebhooks-tw/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kewang","download_url":"https://codeload.github.com/kewang/webhooks-tw/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kewang%2Fwebhooks-tw/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":263226671,"owners_count":23433759,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["openapi","webhooks"],"created_at":"2025-04-13T05:47:11.872Z","updated_at":"2025-07-02T22:33:11.409Z","avatar_url":"https://github.com/kewang.png","language":null,"funding_links":["https://www.paypal.com/ipn"],"categories":[],"sub_categories":[],"readme":"# webhooks-tw\n\n## 什麼是 WebHooks？\n\nWebHooks 的概念很簡單，其實就是 HTTP 版本的 callback：當有事情發生時就送出一個 HTTP POST 的請求；也可以稱為是透過 HTTP POST 請求的事件通知簡易版。\n\n在 Web 應用程式上實作 WebHooks，就是當特定事物產生時發送一個 HTTP POST 的請求，裡面會夾帶一個訊息並送到某個特定的網址。當這個應用程式開放使用者註冊他們自己的網址時，這些使用者就可以擴充、客製及整合這個應用程式到他們自己的擴充服務，甚至是網路上的其他 Web 應用程式。對使用者來說，_當 WebHooks 發生時_，它真的是一個獲得具有價值資訊的方式，而不像以前要不停地透過輪詢取得絕大部分時間無用的資訊。WebHooks 具有極大的潛力，只有你的想像力才有可能限制你自己！(當然，它還沒辦法幫你洗碗。)\n\nWebHooks 意思就是拿來 _做_ 一些事。為了讓 _你_ 的 Web 應用程式更能程式化，下面分成三個較常見的 WebHooks 型式。\n\n### 推送服務：即時取得資料\n\n「推送服務」是用 WebHooks 最簡單的理由。就像前面所提的，不必再每隔幾分鐘就輪詢一次確認是否有新資料。只要註冊 WebHooks 之後，有新資料時就會馬上知道。這不需要花太多工夫，也一點都不麻煩，而且你會發現取得資訊的速度比以前每隔幾分鐘用輪詢的方式要快多了。\n\n### 管線服務：取得資料然後送給其他服務\n\n除了傳遞即時資料之外，WebHooks 也可以用這份資料觸發一些與原本事件無關的動作，這就叫做「管線服務」。比如說可以把 WebHooks 註冊在相簿網站上，然後當你老媽上傳一張新相片到網站上就發電子郵件通知你。或是當你在電商網站新增了一個新商品時，即時透過 Twitter 發一則新訊息推銷出去。\n\n### 外掛程式：處理資料後將資料返回\n\n這就是把全世界的網路變成一個可程式化的平台。可以讓其他使用者用外掛程式來擴充你的應用程式。Facebook Application Platform 及 Google Wave 就是用這種方式來整合他們自己的服務。作法就是將 Web 應用程式的資料透過 WebHooks 送出去，然後把 response 取回來改變自己的資料。以 Facebook 為例，當你要存取 Facebook 上的某個應用程式時，Facebook 會送出一個 WebHooks 並且跟應用程式說「哈囉，有人要存取你的應用程式囉，我該怎麼做才好？」，應用程式就會請 Facebook 把使用者的資訊顯示在這一頁。而 Google Wave 則是當你在 wave 上面做任何動作時，你所加入的所有機器人協作者都會透過 WebHooks 的方式收到通知，而且機器人可以變更這個 wave 的 response。如果你想要允許其他使用者合法地擴充且增加 Web 應用程式時，用「外掛程式」來處理是一個比較好的方式。\n\n## WebHooks 的運作方式為何？\n\nWeb 應用程式可以讓使用者自行將特定網址關聯到各種事件，當事件發生時應用程式就會將資料使用 POST 的方式傳送給這些特定網址。而現在許多便宜的 PHP 主機甚至可以使用 AppJet 或 Scriptlets 這類腳本語言，讓 POST 資料變的更簡單。你要如何做這些事情一切都由你自己決定，除此之外你也可以完成下列各種動作：\n\n* 透過電子郵件或聊天室產生提醒給你\n* 發送資料到另一個應用程式 (即時資料同步)\n* 處理資料而且重新用 API 發送這些資料到另一個應用程式\n* 驗證且保護這些資料，防止被其他應用程式所使用\n\n## 為什麼我要開始在乎 WebHook？\n\n我們開始察覺網路也可以做整合，大部分的 Web 應用程式到現在都還是閉門造車，自己玩自己的。再加上 API 的盛行，我們看到許多混搭及互相整合的應用程式。但是我們還沒發現可程式化網路的美景：一個可以讓使用者在 Web 應用程式之間傳送資料的網路，就像是 Unix 命令列模式一樣。有些人說 RSS 就是解答，**但是他們錯了**。RSS 的核心價值沒錯，但是實作方式是錯的。RSS 還是非常有用，但它沒辦法幫我們帶來一個真正的可程式化網路。\n\n我們只需要一個簡便的方式讓使用者能夠很簡單地即時取得他們想要的任何資料。這表示不用輪詢機制、沒有任何內容限制，也不需解析 XML。這表示答案根本就不是 RSS。使用 HTTP 愈來愈容易。PHP 是一個非常受歡迎而且容易取得的程式開發環境，所以非常適合用來撰寫 hooklets，在 PHP 上面從 POST 請求取得資料就像取得 `$_POST['something']` 一樣簡單。而且建立一個請求到使用者的腳本就跟建立一個 HTTP 請求一樣簡單，在大部分的程式開發環境也都已經內建了。事實上，WebHooks 比實作 API 還要簡單。\n\n不過在實作上有了對網路的**輸出**將會與愈來愈多人採納的 API 所提供的**輸入**資料互補。當你有了輸入及輸出的資料時，你就有了所有可以與應用程式互動的東西。這會促進更小、更專注特定功能的應用程式與開啟 WebHooks 的多樣化應用程式一起協作，這會讓許多令人驚豔且新興的事件發生！\n\n## 應該如何實作 WebHooks？\n\n只要你的使用者可以容易地將他們的網址註冊到你的應用程式，而且當某個事件發生時可以把資料使用 POST 請求送到這個網址就行了。非常簡單。不必遵循什麼特定的規格。\n\n### 真的沒有規格！？\n\n到目前為止還沒有一個針對 WebHooks 的標準，現在有許多組織正在定義指南，或許有一天這些指南會逐步形成一個標準。這每個標準都應該可以用在不同的需求，或是簡單及廣泛的實作。大家可以看看下面這個對不同建議及實作指南的網頁，而且一定要把你的意見或經驗分享給我們。如果你在使用這些建議有一些不好的體驗，或是你覺得這些建議可以做一些調整的時候，快加入這個對話串一起來改善這份規格吧！\n\n* [RESTful WebHooks](https://webhooks.pbworks.com/w/page/13385128/RESTful%20WebHooks)\n\n## 誰在使用 WebHooks？\n\n已經有許多人使用過 WebHooks 了。有些是有意識地，有些是出於實用主義。這通常是一個不錯的信號。讓我們一起來加入這個派對加強這個模式吧。\n\n* [Assembla](http://www.assembla.com/spaces/demostuff/webhook_tool) (project tracking)\n* [BitBucket](http://www.bitbucket.org/) (mercurial commit notifications)\n* [CallMyApp](http://callmyapp.com/) (API-based cron callback service)  \n* DevjaVu\n* Facebook App Platform (sort of)\n* [Femtoo](http://www.femtoo.com/) (content tracking and notification)\n* [FreshBooks](http://developers.freshbooks.com/blog/view/keep_in_sync_with_freshbooks_webhooks/) (accounting)\n* [GitHub](http://github.com/guides/post-receive-hooks) (git push notification)\n* [Google Code](http://code.google.com/p/support/wiki/PostCommitWebHooks)\n* Jott\n* [IMified](http://new.imified.com/developers/api)\n* [LiveDirectory.org](http://livedirectory.org/) (Next generation web - subscription \u0026 notification service)\n* Mailhook.org, SMTP2Web, Astrotrain\n* [Notifixious](http://notifixio.us/)\n* [Papertrail](http://papertrailapp.com/) (syslog \u0026 app log [events](http://help.papertrailapp.com/kb/how-it-works/web-hooks))\n* PayPal ([IPN](https://www.paypal.com/ipn))\n* PBwiki\n* [ProjectLocker](http://blog.projectlocker.com/articles/2009/11/09/webhooks-land-at-projectlocker) (git/svn commit notification)\n* [Shopify](http://wiki.shopify.com/WebHook) (hosted shopping cart)\n* [Spinn3r](http://spinn3r.com/)\n* [SurveyGizmo](http://www.surveygizmo.com/survey-blog/communicate-external-database-http-post/)\n* [Twilio](http://www.twilio.com/) (phone calls)\n* [Versionshelf](http://www.versionshelf.com/)\n* [Wufoo](http://wufoo.com/2010/02/16/setup-webhooks-in-wufoo-to-get-push-notifications-to-your-apps/) (Web forms)\n* [ZenDesk](http://www.zendesk.com/api/targets) (ticketing)\n* 你？\n\n### 誰應該使用 WebHooks？\n\n* 線上應用程式平台\n    * DabbleDB\n    * Coghead\n    * Salesforce\n    * Ning\n* 記得訂過的牛奶 (我只是想要擴展我使用的 todo 應用程式)\n* Twitter (可以用在任何地方)\n* 任何人...\n\n有一些甚至開始嘗試把 WebHooks 用在桌面應用程式上了。\n\n## 投影片\n\n* [Web Hooks](http://www.slideshare.net/progrium/web-hooks) - 我在許多地方分享過這個投影片\n* [Web Hooks on PBwiki](http://www.slideshare.net/guest7e115a/web-hooks-on-pbwiki) - 南森在 PBwiki 針對如何實作 WebHooks 的報告\n                    \n## 有哪些人流行\n\n* [GetPingd](http://groups.google.com/group/getpingd)\n* [Gnip](http://www.gnipcentral.com/)\n* [Joshua Schachter](http://joshua.schachter.org/2008/07/beyond-rest.html)\n\n## 進一步閱讀\n\n* [Web hooks](http://blogrium.com/?p=70) - 在 2006 年 8 月最原始關於談論 WebHooks 的文章\n* [Let's make seeking bliss easier](http://blogrium.com/2006/11/27/lets-make-seeking-bliss-easier/) - 一個大聲嚷嚷說要用 WebHooks 及其他點子建置網路的文章\n* [Automator for the web](http://blogrium.com/2006/12/27/automator-for-the-web/) - 可以用 WebHooks 帶我們去任何地方的文章\n\n你也可以持續關注 [webhooks.org](http://webhooks.org/) 這個網站，取得更多關於 WebHooks 的最新資訊，或是上 [Google Group](http://groups.google.com/group/webhooks) 一起討論吧！\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkewang%2Fwebhooks-tw","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkewang%2Fwebhooks-tw","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkewang%2Fwebhooks-tw/lists"}