譯者 | 胥磊
審校 | 孫淑娟
Serverless早期承諾之一就是更快的解決問題,因為您不再需要先搭建基礎設施就可以開始開發(fā)工作了。我是一年前在??changelog???上的一個播客中聽說Dark的,并立即對它產生了興趣。Dark在2019年??亮相??之初就被稱為“一種用于構建后端服務的整體編程語言,結構化編輯器和基礎架構”。雖然聽起來有點神秘,很明顯是為了談論REST而設置的,換言之“Dark是一種構建Serverless后端服務的新方法”。
Dark和薩爾薩舞課有點相似,你會覺得老師們都很棒而且非常有節(jié)奏感。處理HTTP和JSON和跳舞也沒什么區(qū)別,一樣有節(jié)奏和步驟。您發(fā)送一個請求,然后收到JSON格式的響應,這里面有些約定您已經知道,有些您可以學習。對于本文我認為您至少對音樂是熟悉的。
Dark操作界面的作用就是將一些單調乏味的交互自動化,更重要的是您不必為此編寫任何代碼!某種程度上其為我們展現了一個不再需要編碼的未來發(fā)展趨勢,而語音識別和完善的用戶界面使這種發(fā)展趨于大眾化。雖然這個未來還有些遙遠,但是能發(fā)現這種模式也是明智的。
現在讓我們直接進入Dark的工作界面。您只需要在瀏覽器中基于您的用戶名簡單聲明一個URL就可以立即創(chuàng)建一個畫布,隨后您就可以在上面開始工作了。下面我創(chuàng)建了一個“eastmad-thenewstack”的畫布,并在其上為“/greeting”端點寫了一個 GET 響應。
立即從“builtwithdark”域獲取到了響應。
這是非常棒的并且響應也很快。但我們要做的恰恰相反,用一個新的請求到一個沒有實現后端服務的終端:
回到我的畫布,Dark已經將響應跟蹤存儲為404列表了,這樣我們就可以快速使用它:
通過點擊GET旁邊那個+號,我們將能夠用上面響應”/greeting”的相同方式來響應”/leaveing”的GET請求。這就是所謂的TDD( ??Trace Driven Development??,跟蹤驅動開發(fā))。幾乎通過逆向工程跟蹤的工作都會讓您覺得有點像偵探 — 但我認為這更像黑客,只不過我們監(jiān)視的是各種請求。
重新回到Dark,其現在已經支持OAuth2,即資源所有者、客戶端應用程序和以令牌語言表示的資源服務器之間的三向授權信任。Dark還提供了一個創(chuàng)建Slack APP后端服務的示例,一個可見的Slackbot。雖然示例復雜但讓我們有機會使用一些有用的技術組件,如OAuth。
即使您擁有Slack工作區(qū)的管理員權限,平臺的安全仍然得到謹慎的管理。通過快速瀏覽api.slack.com/app將向您展示一個“創(chuàng)建應用”設置,通過查看基本屬性,您可以得到很多信息:
(注意:句號位于代表Client ID的數字中間位置,這表明其必須作為字符串進行處理)
現在我們必須更多地了解Dark的復雜性。我們需要在 Slack 中創(chuàng)建一個重定向 URL,它將啟動我們的跟蹤過程(查看“OAuth 和Permissions”)。
Dark 希望用戶使用“/oauth-redirect”作為到畫布的路徑,通過Slack去管理分發(fā)和復制可共享的URL。最后我們還需要有一些請求用來調用后端服務,我們將通過點擊Dark的畫布來調用請求并開始追蹤。
實際上,它已經在我們畫布的404列表中等待了,我們現在可以創(chuàng)建其對 GET 的響應:
目前為止一切正常,我們已經觸發(fā)了重定向并且可以看到Dark獲取的完整請求。那我們返回什么呢?從Slack上面,我們得到了“Client Id”和“Client Secret”,所以我們可以在Dark中創(chuàng)建一個POST并返回。
現在,我們需要創(chuàng)建一個POST報文主體,這里就是您需要考慮JSON格式化的地方—盡管Dark有些忽略這點。當我們選擇發(fā)送響應時,Dark會像其他優(yōu)秀的IDE一樣把相關參數展示給我們。Slack API的URL,報文主體和兩組本身就是字典類型的鍵值對。
在示例中展示了報文主體的真實格式,其中client_id和client_secret 可以作為您能直接使用的字符串。
我們可以直接與Slack的OAuth API通信,需要注意的是“code”的值取自Dark收到的請求(在上圖的底部)并且支持JSON解析,所以您可以輸入“request.queryParams.code”。當發(fā)送POST請求時,我們希望得到的是正確的訪問令牌。
本文到此將終止后續(xù)的跟蹤工作,如果您想繼續(xù)該示例,請按照上面的鏈接進行后端演練,用以創(chuàng)建一個簡單的Slackbot。上述工作無法確保每次都成功,但是一定會有反饋信息。所以即使失敗了也相當有啟發(fā)性的。
結論
我們從中學到了什么呢?
- 智能的用戶界面可以很好地適用于熟悉的模式,那些IDE和靜態(tài)語言的用戶多年來一直在使用的模式。
- REST 仍然是實現和理解 API 的最好方式。更復雜的場景應該鼓勵更多使用像Dark之類的工具協助探索服務產品。
- 在各種獨立的信任機構或他們的模擬中工作是理解它的好方法,雖然它仍然很復雜。這就像拿著幾串叮當響的鑰匙和門禁卡,但是仍然需要知道它們的使用順序。
- 不要停止實踐。
譯者介紹
胥磊,51CTO社區(qū)編輯,某頭部電商技術副總監(jiān),關注Java后端開發(fā),技術管理,架構優(yōu)化,分布式開發(fā)等領域。
原文標題:??How to Get Started Building Serverless Backends with Dark??,作者:David Eastman