蒸气2入门-Restful API Swift Server

正如之前在这里宣布的那样,Vapor框架刚刚推出了其2.0版本。 在Monk Software,我们一直在寻找新技术,我们为Vapor提供了机会!

什么是蒸气?

Vapor是服务器端Swift Web框架。 无论您需要什么,Restful API Server,显示html页面,发送电子邮件或推送通知,Vapor几乎可以满足所有需求。

我们将在这篇博客文章中介绍什么?

今天,我想向您展示从Vapor API模板开始,添加一些端点然后将服务器部署到Heroku多么容易。

让我们开始吧

我假设您使用的是装有Swift和Xcode的Mac,如果没有,请安装Xcode(Swift捆绑在其中),如果您使用的是Ubuntu,请按照此指南进行操作。

1)安装蒸气工具箱

要充分利用Vapor,我们还需要它的工具箱,您可以通过在终端中输入以下内容进行安装:

 冲泡安装蒸气 

或者,如果您在Ubuntu上,请执行以下操作:

  sudo apt-get更新 
sudo apt-get安装蒸气

2)创建一个新的应用程序

创建一个超级简单的应用程序,只需在终端中输入:

 蒸气新的IncredibleVaporApp --template = api(或您想要的任何名称) 

在少数情况下,Vapor应该下载所有依赖项,并使用给定的应用程序名称创建一个文件夹。

3)可选:生成Xcode项目文件

如果您想利用Xcode自动补全功能,可以在vapor app文件夹内的终端中键入以下内容:

 蒸气Xcode 

这将生成.xcodeproj,键入“ y”以在Xcode中打开。

4)运行服务器

好的,我们已经准备好运行我们的服务器,如果您使用Xcode,请选择方案App并按play,如果您在Ubuntu中,请输入终端:

 蒸气生成和&蒸气运行 

build将提取要部署的构建,然后运行将启动服务器。

默认情况下,Vapor将在以下地址启动服务器: 0.0.0.0:8080进行测试,请访问http://0.0.0.0:8080/hello, 您将看到此类型的json:

  {“你好,世界”} 

一切都按预期进行!

5)添加自定义端点

现在是时候添加我们的自定义终结点了,假设我们要通过传入一个人的名字来问候他。 首先,在我们的项目中打开Routes.swift文件,然后在方法中

  func build(_ builder:RouteBuilder)抛出 

我们可以添加新的API:

  builder.get(“ greet”){要求 
  let name = req.data [“ name”] ?. string ??  “,你叫什么名字?:D” 
 返回“你好\(名称)” 
}

此代码仅做两件事,将新API添加到端点0.0.0.0:8080/greet ,然后检查URL中是否存在名为“ name”的参数,如果存在,它将返回带有提供的名称的字符串“ Hello” ,如果没有,它会问你叫什么名字,就这么简单。 通过按Xcode中的play保存并重新运行我们的服务器。
导航到0.0.0.0:8080/greet ,然后按Enter,结果应为:

 你好你叫什么名字?  :D 

当然,传递一个像这样的有效名称0.0.0.0:8080/greet?name=Alessio将导致:

 你好阿莱西奥 

6)推送到Heroku

我们创建了我们的第一台服务器,并希望与世界上的所有人打招呼! Heroku将为我们提供帮助。 在项目的根文件夹中打开终端,然后键入:

 蒸气Heroku初始化 

如果您尚未登录heroku,将提示您登录; 而不是heroku要求的自定义名称,我们将其保留为空,因此在以下问题上键入“ n”:
“您要部署到美国地区服务器以外的其他服务器吗?”键入‘n’

“您要提供自定义的Heroku构建包吗?”键入‘n’,

“您使用自定义的可执行文件名称吗?”,键入“ n”

“您现在要推送到Heroku吗?”输入‘y’。 (这需要5〜10分钟)。 完成后,heroku将为您提供项目的git终结点和一个http URL,将其复制并粘贴到浏览器中,然后添加我们的自定义endint,如下所示(我的代码是https://shrouded-fjord-73521.herokuapp.com/):

  https://shrouded-fjord-73521.herokuapp.com/greet?name=alessio 

一切都应该像本地服务器一样工作。

恭喜,您已经在云中创建并部署了Restful Vapor Swift服务器! 希望您喜欢本教程,很快就会有更多!

该教程最初 由Alessio Arsuffi MONK Software的博客上发布