在本文中,您将在Vapor 4中实现Todo-Backend的后端。
前言
Todo-Backend是一个很棒的项目,它提供了用于管理待办事项列表的简单Web API规范。您可以自己实现API,并提供一个端点以了解有关您选择的服务器框架的更多信息(我们将在Vapor 4中使用ServerSideSwift)。
设置好之后,您可以在此处添加测试目标URL,运行测试并实现您的API,直到满足所有测试为止。一个很好的学习机会!
在本教程中,您将学习:
- 如何使用Todo-Backend并使用TDD满足其规格
- 如何使用ngrok使本地后端可用
- 如何配置CORS
- 如何写路由
- 如何 CRUD todos
- 如何处理模型迁移
设置项目
创建 Vapor 项目
仅需几个步骤,即可在您的计算机上具有完全运行的Vapor后端。
➜ SwiftWeb vapor-beta new todo-backend-vapor
Cloning template...
name: todo-backend-vapor
Would you like to use Fluent?
y/n> y
fluent: Yes
Which database would you like to use?
1: Postgres
2: MySQL (beta)
3: SQLite (beta)
4: Mongo (beta)
> 3
在Xcode中打开项目:
- 生成 xcode 项目
➜ SwiftWeb cd todo-backend-vapor
➜ todo-backend-vapor git:(master) swift package generate-xcodeproj
open .
在Xcode中添加工作目录:
编辑您的 Run scheme 并启用“Use custom working directory”。将其设置为项目的根目录。在Xcode中运行时,这是必需的,以确保我们的SQLite数据库文件存储在此处。
启用自动迁移
现在,让我们再添加一个步骤来启用自动迁移。 Vapor 的 ORM Fluent 将在启动时尝试迁移您的模型/方案:
等待所有软件包解析完毕,选择Run方案并运行您的项目:
您会注意到 db.sqlite已经创建了。随时使用您选择的数据库客户端(例如TablePlus或SQLiteStudio)对其进行检查。
切换到浏览器并打开 http://localhost:8080。它应该告诉你It works! 🎉
设置ngrok
为了使您的本地后端可见并且可用于 todobackend.com,我们将使用 ngrok。
步骤如下
- 转到 [ngrok.com/download]
- 下载客户端,解压缩并将其保存在某个位置,例如
/Applications - 使用ngrok创建一个免费帐户
- 在此处找到您的身份验证令牌:dashboard.ngrok.com/get-started…
- 在终端类型中连接您的帐户:
$ /Applications/ngrok authtoken {your auth token}
Start ngrok
- 从现在开始,每当您要创建到本地后端的隧道时,只需键入:
$ /Applications/ngrok http 8080
这将通过ngrok提供的URL使本地端口8080可以访问:
注意:在免费帐户中,只要您停止/启动ngrok,URL就会更改。但这现在不应该困扰我们。
将HTTPS URL复制到浏览器。您应该It works!再次看到。太好了,您的后端现在可以从外部访问🙌
注意: ngrok提供了一个出色的Web界面,您可以在其中跟踪传入的请求。这对于调试非常有用-您可以通过在浏览器中导航到 http://127.0.0.01:4040来打开它。
将您的后端连接到Todo-Backend
接下来,将您的后端连接到Todo-Backend。确保您的Xcode后端仍在运行。
- 转到todobackend.com/specs/
- 添加您的
https URL并附加/todos例如https://e03cfeab1b7d.ngrok.io/todos
注意:
/todos已经在vapor api-template项目中为您提供了端点
- 运行测试
它能够访问我们的服务器,但所有测试均失败。现在该满足规格了。💻