一步一步在 Prefect Swift 服务器上编写第一个接口 (二)
一步一步在 Prefect Swift 服务器上编写第一个接口 (二)
链接: 一步一步在 Prefect Swift 服务器上编写第一个接口 (一)
目录
-
- 1. 准备材料
- 2. 了解空白项目文件目录结构并在 Xocde 中运行项目代码
- ① 使用SPM软件包管理器初始化的空白项目
- ② 使用 Xcode 打开 Swift-Perfect.xcodeproj
- 3. 创建 httpServer 服务器
- ① 创建并开启 httpServer
- ② 增加拦截器和路由
- 4. 使用 postman 验证
- 5. Demo 地址
- 6. 后面我们会继续拓展这个项目
1. 准备材料
- Perfect 官网
- 官方代码仓库 Perfect GitHub
- 模拟网络请求工具 postman
- 《文章一》中的空白项目
2. 了解空白项目文件目录结构并在 Xocde 中运行项目代码
① 使用SPM软件包管理器
初始化的空白项目
下图为文章一中,我们利用SPM软件包管理器
初始化的空白项目
此时如果想使用 Xcode
打开项目,需要打开终端
进入到项目根目录
$ swift package generate-xcodeproj
generated: ./Swift-Perfect.xcodeproj
项目根目录会创建出供Xcode
编辑项目使用的Swift-Perfect.xcodeproj
文件
② 使用 Xcode
打开 Swift-Perfect.xcodeproj
编译项目选择 Swift-Perfect
, 编译设备选择 My Mac
在”Library Search Paths“检索项目软件库中增加
$(PROJECT_DIR)
选择 Recursive
为了使服务器能够访问工程文件夹下的目录,请选择菜单命令 “Product > Scheme > Edit Scheme…” 然后设置工作目录 “Use Custom Working Directory” 为项目文件夹。
备注:因为项目中如果添加新的文件或者增加新的第三方库,需要重新创建
Swift-Perfect.xcodeproj
文件,对.xcodeproj
的更改会丢失,只要重新创建了.xcodeproj
就需要重新配置,所以后期会经常重复上面前两个步骤
配置完成后,点击 Xcode Run
或 command+R
编译运行项目。
Xcode
控制台输出
3. 创建 httpServer
服务器
① 创建并开启 httpServer
打开 main.swift
, 编辑代码如下
import PerfectLib
import PerfectHTTP
import PerfectHTTPServervar HTTPport = 8180
var confData: [String:[[String:Any]]] = ["servers": [["name":"estate_score_swift_server","port":HTTPport,"routes":[],"filters":[]]]
]do {// Launch the servers based on the configuration data.try HTTPServer.launch(configurationData: confData)
} catch {// fatal error launching one of the serversfatalError("\(error)")
}
点击运行 -> 出现弹框提示 -> 允许
Xcode
控制台输出如下
打开浏览器输入 0.0.0.0:8180
因为还没有 web
文件,所以提示 找不到文件。不过已经可以证明 httpServer
已经创建并启动成功了。
② 增加拦截器和路由
项目默认使用 Swift Package Manager
做三方管理
查看 Package.swift
文件
添加如下代码
.package(url: ".git", "3.0.0"..<"4.0.0")
dependencies: ["PerfectHTTPServer","PostgresStORM"]
编辑好后,进入终端
清理 .build
文件夹缓存的三方文件
$ swift package clean
重新下载编译项目,此处为了下载 Postgres-Storm
及 其他相关依赖项
$ swift build
正如上文所说,刚才增加了 Postgres-Storm
三方库,所以需要重新生成 .xcodeproj
$ swift package generate-xcodeproj
在”Library Search Paths“检索项目软件库中增加
$(PROJECT_DIR) 选择 Recursive
创建 Routes.swift
文件,编辑代码如下
import PerfectHTTP
import StORMclass Handlers {// Basic "main" handler - simply outputs "Hello, world!"static func main(data: [String:Any]) throws -> RequestHandler {return {request, response inlet scoreArray: [String: Any] = ["status": "200","message": "hello, world!"]let jsonString = try? scoreArray.jsonEncodedString()response.setBody(string: jsonString ?? "")responsepleted()}}
}
创建 Filters.swift
文件,编辑代码如下
import PerfectHTTPServerfunc filters() -> [[String: Any]] {var filters: [[String: Any]] = [[String: Any]]()filters.append(["type":"response","priority":"high","name":PerfectHTTPServer.HTTPFilter.contentCompression])return filters
}
创建 Routes.swift
文件,编辑代码如下
import PerfectHTTPServerfunc mainRoutes() -> [[String: Any]] {var routes: [[String: Any]] = [[String: Any]]()// Handler for home pageroutes.append(["method":"post", "uri":"/", "handler":Handlers.main])return routes
}
编辑 main.swift
, 增加如下代码
// Load Filters
confData["servers"]?[0]["filters"] = filters()// Load Routes
confData["servers"]?[0]["routes"] = mainRoutes()
按 command+b
编译代码会发现项目文件报错。这是因为 工程文件没有刚才创建的三个文件路径,需要我们在终端重新生成工程文件
$ swift package generate-xcodeproj
在”Library Search Paths“检索项目软件库中增加
$(PROJECT_DIR) 选择 Recursive
再次按 command+b
编译代码,编译成功!
4. 使用 postman 验证
按 command+r
运行项目,Xcode
控制台输出如下图,证明项目运行成功
下载 postman 并打开,如图步骤进行验证
一个超级简单的 api 接口就实现了
请求地址 | :8180 |
---|---|
请求参数 | – |
返回参数 | status : 状态码 message: 消息 |
5. Demo 地址
链接 Demo 01
6. 后面我们会继续拓展这个项目
- 实现与
PostgreSQL
数据库的链接和查询 - 解析具有参数的网络请求
- 老鼠走迷宫II
- cmd md命令 创建文件夹
- snmp协议与snmp++
- linux驱动
- 做php的灯就灭,121128 还原 我是做PHP的,女嘉宾把灯全灭了 真相
- #include<>和#include“”的区别
- VMware安装windows server2008R2x64
- 【Yolo】Jetson Orin Nano下部署 YoloV5
- CSS之text
- mmap()
- 软件兼容性与软件兼容性测试
- 如何从ext3升级到ext4?
- simpledateformat怎么改变格式 SimpleDateFormat 的使用及其 注意事项
- 转:(记录)C语言中的itoa()函数的用法解析
- linux查看tomcat 控制台,linux 下查看Tomcat的状态,以及开启停止服务命令
- gets函数用法
- DBCS