Vapor:Swift 写后端,从这开始

Vapor 在 GitHub 上攒了 26,123 颗 Star,是 Swift 生态里最主流的 HTTP 服务端框架。

一句话概括它的定位:用 Swift 写 Web 应用、API 接口或云端服务的基础框架。如果你是 iOS 开发者想往服务端延伸,或者就是单纯喜欢 Swift 的语法,Vapor 基本是绕不开的选择。

正文顶部截图

1、 它解决什么问题

做服务端开发,主流选择要么是 Node.js 那一套,要么是 Java/Go/Python。Swift 开发者长期处于一个尴尬的位置:语言本身不差,但服务端生态薄弱,缺少一个成熟的、社区活跃的框架来撑场面。

Vapor 就是来补这个缺的。它基于 Apple 的 NIO 网络框架构建,底层性能靠 Swift NIO 保证,上层提供了一套完整的 Web 开发工具链:路由、中间件、模板渲染、ORM、WebSocket、认证、邮件发送,该有的都有。

更重要的是,Swift 6.0 之后引入了更强的并发安全检查,Vapor 也跟进支持。用 Swift 写后端,类型安全和内存安全这两个优势在 Vapor 里可以直接用上。

2、 核心能力

路由和中间件

Vapor 的路由系统支持 RESTful 风格定义,也能处理复杂的嵌套路由和分组。中间件链的写法跟 Express.js 类似,上手成本低。

Fluent ORM

自带的 Fluent 是一个支持 PostgreSQL、MySQL、SQLite 的 ORM。模型定义、迁移、查询都用 Swift 代码完成,不用手写 SQL。对 iOS 开发者来说,Fluent 的 API 风格跟 Core Data 有些相似,迁移成本不大。

模板引擎

Leaf 是 Vapor 配套的模板引擎,语法简洁,支持布局继承、条件渲染、循环等常见操作。服务端渲染页面的场景可以直接用。

WebSocket 支持

框架内置了 WebSocket 支持,不需要额外装库。做实时通信、聊天室这类功能,开箱即用。

README区域截图

3、 快速上手

环境要求:macOS 或 Linux,安装 Swift 6.0 或更高版本。

安装 Vapor CLI:

brew install vapor

创建新项目:

vapor new my-project
cd my-project
vapor build
vapor run

项目跑起来后默认监听 8080 端口,浏览器访问 http://localhost:8080 就能看到欢迎页。

写一个简单的 API 接口,在 routes.swift 里加:

app.get("hello") { req async throws -> String in
    return "Hello, Vapor!"
}

访问 /hello 就能拿到返回值。整个过程不需要配置额外的文件或依赖。

4、 跟其他方案的对比

跟 Express.js(Node.js)比:Vapor 的类型系统更严格,编译期能抓到更多错误。代价是热重载不如 JS 生态方便,开发迭代节奏稍慢。

跟 Gin(Go)比:两者都是编译型语言,性能接近。Vapor 的生态成熟度不如 Gin,但 Swift 的语法表达力更强,写起来更舒服。

跟 Spring Boot(Java)比:Spring Boot 功能全面,企业级场景更稳。Vapor 更轻量,适合中小项目和独立开发者。

5、 适合谁用

  • 想用 Swift 做全栈的 iOS 开发者,前后端统一语言
  • 需要部署 Swift 服务端应用的团队
  • 对 Swift NIO 有了解、想在此基础上构建 Web 服务的开发者
  • 个人项目或小型 API 服务,追求轻量和开发体验

Vapor 的文档写得不错,社区在 Discord 上也比较活跃。遇到问题能找到人问。对 Swift 开发者来说,这是目前写后端最顺手的选择。

求轻量和开发体验

Vapor 的文档写得不错,社区在 Discord 上也比较活跃。遇到问题能找到人问。对 Swift 开发者来说,这是目前写后端最顺手的选择。

更多推荐