引言:为什么 Swift 不仅仅用于移动开发
长期以来,Swift 语言一直与 iOS 和 macOS 开发紧密关联。然而,随着 Swift 5.0 的发布以及 ABI 稳定性的实现,随后又推出了 SwiftNIO 模块,服务器端 Swift 的生态系统实现了强劲的飞跃。如今,Swift 是一种用于构建高负载 Web 应用、微服务和 API 的全功能语言。凭借其强类型、内存安全以及接近 C++ 的性能,Swift 正成为 Python(Django/Flask)和 JavaScript(Node.js)的绝佳替代方案。
在本文中,我们整理了 10 个用于 Web 开发的最佳 Swift 框架,它们将帮助您开始使用 Apple 的原生语言构建后端。我们将介绍行业巨头(Vapor、Kitura)以及用于特定任务的利基解决方案。
Web 开发十大 Swift 框架
1. Vapor — 无可争议的领导者
Vapor 是 Swift 上最流行且发展最活跃的 Web 框架。它构建在 SwiftNIO 之上,确保了异步性和高性能。Vapor 的生态系统包括 ORM(Fluent)、模板引擎(Leaf)、WebSocket 支持以及众多现成的软件包。
简单路由示例:
import Vapor
func routes(_ app: Application) throws {
app.get("hello") { req async -> String in
return "Hello, Swift Web!"
}
app.get("user", ":id") { req -> User in
guard let id = req.parameters.get("id", as: Int.self) else {
throw Abort(.badRequest)
}
// 数据库查询
return try await User.find(id, on: req.db) ?? User(id: 0, name: "Unknown")
}
}
优点: 庞大的社区、优秀的文档、支持 MySQL/PostgreSQL/SQLite、开箱即用的异步性。
缺点: 需要了解 SwiftNIO 才能进行深度定制。
2. Kitura — IBM 的遗产
由 IBM 开发的 Kitura 长期以来一直是 Vapor 的主要竞争对手。尽管 IBM 已停止积极支持,但该框架仍然稳定,并用于遗留项目中。Kitura 提供强大的 REST 路由、与 Kubernetes 和 OpenAPI 的集成。
代码示例:
import Kitura
let router = Router()
router.get("/status") { request, response, next in
try response.send(json: ["status": "ok", "version": "1.0"]).end()
next()
}
Kitura.addHTTPServer(onPort: 8080, with: router)
Kitura.run()
优点: 设置简单、内置 Swagger 支持、适合原型开发。
缺点: 更新缓慢,与 Vapor 相比新功能较少。
3. Perfect — 稳定性和功能性
Perfect 是 Swift 上最早的 Web 框架之一。它不仅提供 HTTP 服务器,还提供 WebSocket、Mustache 模板、文件处理和网络请求。Perfect 以其模块化和在 Linux 上的出色性能而闻名。
示例:
import PerfectHTTP
import PerfectHTTPServer
var routes = Routes()
routes.add(method: .get, uri: "/api/items") { request, response in
response.setHeader(.contentType, value: "application/json")
response.appendBody(string: "[\\"item1\\", \\"item2\\"]")
response.completed()
}
try HTTPServer.launch(name: "localhost", port: 8181, routes: routes)
优点: 大量内置模块,出色的 WebSocket 支持。
缺点: 语法过时,比 Vapor 更难学习。
4. Hummingbird — 轻量且快速
Hummingbird 是一个极简框架,专为实现最大性能而设计。它非常适合微服务和 API 网关。构建于 SwiftNIO 之上,