译者 | 胥磊
审校 | 孙淑娟
Serverless早期承诺之一就是更快的解决问题,因为您不再需要先搭建基础设施就可以开始开发工作了。我是一年前在changelog上的一个播客中听说Dark的,并立即对它产生了兴趣。Dark在2019年亮相之初就被称为“一种用于构建后端服务的整体编程语言,结构化编辑器和基础架构”。虽然听起来有点神秘,很明显是为了谈论REST而设置的,换言之“Dark是一种构建Serverless后端服务的新方法”。
Dark和萨尔萨舞课有点相似,你会觉得老师们都很棒而且非常有节奏感。处理HTTP和JSON和跳舞也没什么区别,一样有节奏和步骤。您发送一个请求,然后收到JSON格式的响应,这里面有些约定您已经知道,有些您可以学习。对于本文我认为您至少对音乐是熟悉的。
Dark操作界面的作用就是将一些单调乏味的交互自动化,更重要的是您不必为此编写任何代码!某种程度上其为我们展现了一个不再需要编码的未来发展趋势,而语音识别和完善的用户界面使这种发展趋于大众化。虽然这个未来还有些遥远,但是能发现这种模式也是明智的。
现在让我们直接进入Dark的工作界面。您只需要在浏览器中基于您的用户名简单声明一个URL就可以立即创建一个画布,随后您就可以在上面开始工作了。下面我创建了一个“eastmad-thenewstack”的画布,并在其上为“/greeting”端点写了一个 GET 响应。
立即从“builtwithdark”域获取到了响应。
这是非常棒的并且响应也很快。但我们要做的恰恰相反,用一个新的请求到一个没有实现后端服务的终端:
回到我的画布,Dark已经将响应跟踪存储为404列表了,这样我们就可以快速使用它:
通过点击GET旁边那个+号,我们将能够用上面响应”/greeting”的相同方式来响应”/leaveing”的GET请求。这就是所谓的TDD( Trace Driven Development,跟踪驱动开发)。几乎通过逆向工程跟踪的工作都会让您觉得有点像侦探 — 但我认为这更像黑客,只不过我们监视的是各种请求。
重新回到Dark,其现在已经支持OAuth2,即资源所有者、客户端应用程序和以令牌语言表示的资源服务器之间的三向授权信任。Dark还提供了一个创建Slack APP后端服务的示例,一个可见的Slackbot。虽然示例复杂但让我们有机会使用一些有用的技术组件,如OAuth。
即使您拥有Slack工作区的管理员权限,平台的安全仍然得到谨慎的管理。通过快速浏览api.slack.com/app将向您展示一个“创建应用”设置,通过查看基本属性,您可以得到很多信息:
(注意:句号位于代表Client ID的数字中间位置,这表明其必须作为字符串进行处理)
现在我们必须更多地了解Dark的复杂性。我们需要在 Slack 中创建一个重定向 URL,它将启动我们的跟踪过程(查看“OAuth 和Permissions”)。
Dark 希望用户使用“/oauth-redirect”作为到画布的路径,通过Slack去管理分发和复制可共享的URL。最后我们还需要有一些请求用来调用后端服务,我们将通过点击Dark的画布来调用请求并开始追踪。
实际上,它已经在我们画布的404列表中等待了,我们现在可以创建其对 GET 的响应:
目前为止一切正常,我们已经触发了重定向并且可以看到Dark获取的完整请求。那我们返回什么呢?从Slack上面,我们得到了“Client Id”和“Client Secret”,所以我们可以在Dark中创建一个POST并返回。
现在,我们需要创建一个POST报文主体,这里就是您需要考虑JSON格式化的地方—尽管Dark有些忽略这点。当我们选择发送响应时,Dark会像其他优秀的IDE一样把相关参数展示给我们。Slack API的URL,报文主体和两组本身就是字典类型的键值对。
在示例中展示了报文主体的真实格式,其中client_id和client_secret 可以作为您能直接使用的字符串。
我们可以直接与Slack的OAuth API通信,需要注意的是“code”的值取自Dark收到的请求(在上图的底部)并且支持JSON解析,所以您可以输入“request.queryParams.code”。当发送POST请求时,我们希望得到的是正确的访问令牌。
本文到此将终止后续的跟踪工作,如果您想继续该示例,请按照上面的链接进行后端演练,用以创建一个简单的Slackbot。上述工作无法确保每次都成功,但是一定会有反馈信息。所以即使失败了也相当有启发性的。
结论
我们从中学到了什么呢?
- 智能的用户界面可以很好地适用于熟悉的模式,那些IDE和静态语言的用户多年来一直在使用的模式。
- REST 仍然是实现和理解 API 的最好方式。更复杂的场景应该鼓励更多使用像Dark之类的工具协助探索服务产品。
- 在各种独立的信任机构或他们的模拟中工作是理解它的好方法,虽然它仍然很复杂。这就像拿着几串叮当响的钥匙和门禁卡,但是仍然需要知道它们的使用顺序。
- 不要停止实践。
译者介绍
胥磊,51CTO社区编辑,某头部电商技术副总监,关注Java后端开发,技术管理,架构优化,分布式开发等领域。
原文标题:How to Get Started Building Serverless Backends with Dark,作者:David Eastman