一步一步在 Prefect Swift 服务器上编写第一个接口 (二)

编程入门 行业动态 更新时间:2024-10-26 17:32:34

一步一步在 Prefect Swift 服务器上编写<a href=https://www.elefans.com/category/jswz/34/1770593.html style=第一个接口 (二)"/>

一步一步在 Prefect Swift 服务器上编写第一个接口 (二)

链接: 一步一步在 Prefect Swift 服务器上编写第一个接口 (一)

目录

    • 1. 准备材料
    • 2. 了解空白项目文件目录结构并在 Xocde 中运行项目代码
      • ① 使用SPM软件包管理器初始化的空白项目
      • ② 使用 Xcode 打开 Swift-Perfect.xcodeproj
    • 3. 创建 httpServer 服务器
      • ① 创建并开启 httpServer
      • ② 增加拦截器和路由
    • 4. 使用 postman 验证
    • 5. Demo 地址
    • 6. 后面我们会继续拓展这个项目

1. 准备材料

  1. Perfect 官网
  2. 官方代码仓库 Perfect GitHub
  3. 模拟网络请求工具 postman
  4. 《文章一》中的空白项目

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 Runcommand+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. 后面我们会继续拓展这个项目

  1. 实现与 PostgreSQL 数据库的链接和查询
  2. 解析具有参数的网络请求

更多推荐

一步一步在 Prefect Swift 服务器上编写第一个接口 (二)

本文发布于:2024-02-11 23:44:36,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1684360.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:第一个   器上   接口   Prefect   Swift

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!