ARCHIVE
全部文章
从小红书 xhsdev 后门事件,看移动端调试体系与 P0 事故教训
2025 年 6·18 小红书后门事件:拆解其暴露的调试/测试工具链用了哪些服务、各自目的,以及一次 P0 事故的根因、影响与工程教训。
SwiftNIO 原理
Vapor 跑在 SwiftNIO 之上。本文带你俯瞰 SwiftNIO 的架构:事件循环、Channel 流水线、Bootstrap、ByteBuffer,以及 Promise/Future 的协作方式。
控制器与 RouteCollection
当项目变大、路由越来越多时,一条条手写 router 会难以维护。本文教你用控制器(Controller)把零散路由组织成独立模块,让代码清晰、好维护。
配置数据库
Vapor 3 原生支持 SQLite、MySQL、PostgreSQL 三种关系型数据库。本文带你认识它们,并学会用 configure.swift 把 SQLite 配起来开始开发。
Fluent 模型持久化
Fluent 是 Vapor 3 里的 ORM(对象关系映射)。本文带你定义第一个数据模型 Acronym,并让它通过 Migration 自动建表、持久化到数据库。
数据库 CRUD 操作
RESTful API 提供了一套用 URL + HTTP 方法调用 CRUD 的标准方式。本文用 Vapor 3 代码实现 Acronym 的增、查、改、删四个接口。
切换到 PostgreSQL
之前为了方便一直用基于文件的 SQLite,但它不支持外键约束。本文用 Docker 起 PostgreSQL,并在工程里改接 FluentPostgreSQL,验证外键约束真正生效。
其它测试用例
前面只写了一个用例,这里再多写几个练手:通过 API 新增用户、按 id 取单个用户,以及测试 User/Acronym、Acronym/Category 之间的关联。
在 Linux 上测试
部署到 Linux 与本地 Mac 的 Foundation 实现不同,必须保证在 Linux 上也能跑通测试。本文讲 LinuxMain 手动登记测试用例,以及用 Docker 本地模拟 Linux 跑全套。
部署到私有服务器
不想依赖第三方平台?本文教你在自己的 Ubuntu 云服务器上用 Docker 跑起 PostgreSQL,再用 nginx 做端口转发,把 Vapor 3 应用部署上线。
Leaf 模板引擎
接口返回 JSON 是给前端 App 用的;但要做一个人人能直接打开的网站,得返回 HTML。Leaf 就是 Vapor 自带的模板语言:把变量塞进页面,动态生成最终 HTML。
数据校验
表单提交的数据不一定靠谱。本文教你用 Vapor 3 的 Validatable 协议校验注册表单:既支持字段级规则,也能自定义「两次密码一致」这样的跨字段校验,并把错误提示回显到页面。
Cookie 与 Session
网站要记住「你是谁」,靠的就是 Cookie 和 Session。本文用 Vapor 3 的 SessionMiddleware 实现登录与会话认证,并用 Cookie 确认提示和 CSRF Token 加固 Web 应用。
数据库迁移
随着功能迭代,数据表结构也得跟着变。本文用 Vapor 3 的 Fluent 迁移,给 User 加 Twitter 字段、给 Category 加唯一约束,并按环境创建管理员账号。
Google 登录
有时用户不想每到一个网站都注册新账号,本章用 Vapor 3 配合 Imperial 接入 Google 的 OAuth 2.0,让用户用 Google 账号一键登录。
移动端(iOS)接入
Vapor 多数时候在讲服务端,但你的 App 总得有个客户端。这篇短文讲清楚 iOS 接入时最常被卡住的两道关:怎么放开 HTTP 明文请求、怎么信任自签 HTTPS 证书。
Mac M1 下用 Docker 跑起 CentOS 8 并开启 SSH 远程连接
在 Apple Silicon Mac 上用 Docker 起 CentOS 8 容器并开启 SSH,像连真机一样远程登录,适合临时验证 Linux 环境。