当前位置: 首页 > 科技观察

你好,服务端Swift

时间:2023-03-20 15:55:01 科技观察

自从苹果正式发布开源版SwiftforLinux后,服务端Swift终于迎来了激动人心的前景。我的好奇心终于抑制不住了,是时候试试服务端的Swift了!除了用过几个Baas,我没有任何后端编程经验,幸好开源社区提供了现成的框架。我尝试了TannerNelson推荐的Vapor框架。它非常易于使用,非常适合我当前的任务,我将在整个文档中使用Heroku。我决定使用Heroku的原因是我们的后端团队使用它并且它对前端非常友好。写到这里时,为了解决Heroku框架运行中的几个小问题,提交了一个pullrequest。如果代码尚未合并,请将您的包管理器设置为从此处下载。安装要继续本教程,首先,您需要一个安装了SwiftDevelopmentSnapshot的Heroku帐户。在撰写本文时,swift包管理器未包含在其正式版本中。所以为了使用这个工具,你必须下载开发快照。我们开始的目标是创建一个简单的Swift服务器并在Heroku上运行。这个不需要在linux环境下做,就好像你在使用本地服务器一样。您只需创建一个原生Xcode项目,稍微设置一下项目,然后在Swift包管理器中运行它。整个过程分为4步:将main.swift复制到根目录下的Sources目录下,创建一个Package.swift文件,将.build目录添加到导入路径中。要使用自动补全和语法高亮功能,需要在Swift包管理中添加提交构建器的构建目录导入路径。注意在importpaths的Debug中设置debug目录,Release项进入release目录。使用工具链运行Xcode如果您使用的是Xcode7.3,则可以使用Xcode>Toolchains菜单打开Xcode实例以打开swift快照。因为我们无法在Xcode中进行编译,所以只能通过命令行进行编译。编写服务器让我感到高兴的是,我需要为概念验证编写的代码量实际上只有几行。启动和运行服务器对我来说甚至不到10行代码。要启动服务器,只需在终端中输入命令:OK,让我们打开浏览器。我的浏览器安装了json插件,您的屏幕可能会有所不同。迁移到云服务器在本地很顺利,但是如果放在云端就更好了。我迫不及待地想要在云端启动并运行该应用程序。这对我来说是一个新的挑战,幸运的是,我得到了VincentToms的悉心指导。安装Heroku很愉快,几分钟后我就创建了一个Heroku应用程序,我正准备上传我的项目。错误。这只是今天许多错误中的一个。我预料到事情不会一帆风顺,所以我查看了Vapor的文档,最后发现问题出在所谓的buildpacks上。Heorku提供了一些标准的构建包,但根本没有Swift的构建包。无奈之下求助于开源社区,正好看到了KyleFuller的buildpack。集成它要简单得多。使用此buildpack启动后,应用程序成功加载,下一步是访问其URL。再出问题,事情就不会那么顺利了,是吗?在谷歌搜索和查看一些示例后,我发现我缺少一个Procfile。浏览这个文件的内容,就可以明白这个文件是做什么用的了。buildpack创建可执行文件,但Heroku不知道。通过Procfile,我们告诉Heroku运行SwiftServerIO可执行文件。上传此Procfile。仍然出现错误Heroku编译的2分支似乎变得无限长。重新打开浏览器,发现还是报错。我想也许Heroku还没有完成启动(它没有),所以我等了一会儿,终于意识到出了点问题。可执行文件已生成,进程文件已准备就绪,因此一定有问题。再次谷歌搜索,直到我最终发现我需要扩展应用程序。这是使用Heroku工具带中的一个简单命令完成的。herokups:scaleweb=1Heroku在免费情况下只有一个dyno(Heroku计费单位,10~50个请求/秒)。但是对于我们简单的服务器来说,这已经足够了。因此,在我们将scaleweb设置为1dyno之后,再次在浏览器中查看。有效!有效!服务器启动,全能的helloworld出现!喧闹过后,让我们真正打个招呼吧!在main.swfit文件中添加一小段代码响应请求,这样服务器就可以因人而异地打招呼了。就是偷懒了,加个新路由,让服务器根据输入输出不同的问候语。一切正常,但作为一般规则,我仍然做好出错的心理准备。提交更改并将代码推送到Heroku。问好!经过一分多钟的编译,在浏览器中访问该URL,服务器返回一个问候语。你可以在这里查看效果。what'snext可以说服务端的Swift离不开社区的大力支持。能够从云端获取JSON对我来说是一个令人兴奋的开始,我迫不及待地想看看接下来会发生什么。当然,在那之前,我不得不继续和IntrepidPursuits的同事们一起写一个iOSApp。如果你想了解我的最新进展,请访问我的Github或Twitter。服务器端Swift在此处下载源代码。在Journal文件夹中,有一个分步指南。