技术:Swift5.7、Vapor4.0、服务器、本地服务器、Vapor基本使用
运行环境:
Swift5.7 + Xcode14 + MacOS12.6 + Docker Desktop + Azure Data Studio
参考下载工具链接
Homebrew、Vapor 、Postman、Azure Data Studio 、DBeaver 、Docker Desktop
Vapor入门-环境搭建
主要讲解了以下内容
安装HomeBrew、安装Vapor、自行安装Postman(测试API)、自行安装Azure Data Studio - (Postgres数据库)
创建了一个Vapor项目
使用Postman访问了Vapor的默认路由和hello路由
安装Vapor
- 安装
Homebrew
- MacOS的包管理器
终端指令/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
- 安装 vapor
终端指令brew install vapor
- 检查Vapor是否安装成功
终端指令vapor --help
出现下图表示安装成功
4. 创建Vapor项目
终端指令 - 其中XY-Vapor-API
表示项目名称vapor new XY-Vapor-API
name: XY-Vapor-API Would you like to use Fluent? (--fluent/--no-fluent) y/n> y fluent: Yes db: Postgres (Recommended) Would you like to use Leaf? (--leaf/--no-leaf) y/n> n leaf: No 这上面几句表示 1.是否使用Fluent 。Fluent表示Orm。它是一个对象关系映射器 - 项目使用 2.使用那个数据库 - 我这里使用Postgress 3. 是否使用叶子 - 不使用 - 叶子表示一个模板语言。就像制作一个网页一样
- 使用Xcode打开
vapor xocde
首次运行Vapor项目出现警告
原因是 表示 没有给该方案设置自定义工作目录
[ WARNING ] No custom working directory set for this scheme, using /Users/liyuhong/Library/Developer/Xcode/DerivedData/XY-Vapor-API-godrxlkftzjdvncdelssjgmebuut/Build/Products/Debug
1. 设置
2. 再次启动 - 警告消失
检查8080端口是否正在使用
通过终端 输入
lsof -i:8080
liyuhong@liyuhongdeMac-mini XY-Vapor-API % lsof -i:8080
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
Run 9360 liyuhong 12u IPv4 0x61be8aab9b1e8631 0t0 TCP localhost:http-alt (LISTEN)
杀死8080端口 并且再次检查8080端口是否有正在运行
通过终端的指令 kill
kill -9 PID号
杀死端口
查看Vapor原理 分析
1. Package.swift
是我们的SPM清单
它是一个Swift包管理器
Vapor大量使用它
2.查看Vapor项目
是没有Xcode的项目文件
那是因为它像一个包裹
3.查看Vapor源码 - Sources - Controllers
、Migrations
、Models
Controllers 提供了一个待办事项的清单
在控制器内部对逻辑进行分类,而不是将它全部放在一个文件中
Migrations 和数据库一起使用 、所以我们将进行所谓的数据迁移
这就是准备我们的数据库,这意味着在我们的数据库创建新表
Models - 这就是我们数据库中数据的模型。
Configure - 我们有配置功能
这里只有一个功能,它配置我们将使用的数据库
它添加了我们迁移,并运行routes函数,然后routes函数是 我们所有的路由。都是如此不同的端点的地方。它们将被命中
我们将通过我们的iOS应用程序请求。
如果我们访问hello 那么就会执行hello函数
4.查看Vapor单元测试 - AppTests.swift
Vapor没有默认测试。 而我们创建的项目提供了一个可以使用的单元测试.
这里单元测试就是启动应用程序。我们要去设置路线
我们不会对这个系列进行单元测试
因为我们有Docker组合文件。
5.查看Docker组合文件 - docker-compose.yml
、Dockerfile
这配置了我们的API以运行并让数据库在DockerFile文件中运行。
这里用于实际创建Docker映像的内容。老实说。我不知道这两个文件的所有内容。
6.Package.resolved 包解析
使我们项目中在Package Swift中定义的包的指定版本