如何在30分钟内用Swift编写REST API:初学者指南

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

如何在30分钟内用Swift编写REST API:初学者指南



Swift不仅是一种用于创建iOS和macOS移动应用程序的语言。随着Vapor框架的出现,用Swift进行服务器端应用程序开发变得既方便又可行。在本文中,我们将展示如何在短短30分钟内用Swift编写一个简单的REST API。您将了解使用Vapor的基本原则,学习如何创建路由、处理请求以及返回JSON响应。



本指南非常适合已经熟悉Swift基础知识但从未编写过服务器端代码的初学者。我们将通过代码示例和解释,一步步地讲解整个过程。



什么是REST API以及为什么需要它?



REST(表述性状态转移)是一种网络分布式应用程序组件交互的架构风格。REST API允许客户端应用程序(例如iOS应用)通过HTTP请求从服务器获取和发送数据。



REST中使用的主要HTTP方法:

  • GET — 获取数据
  • POST — 创建新资源
  • PUT — 更新现有资源
  • DELETE — 删除资源


在我们的示例中,我们将创建一个用于管理任务列表(Todo List)的简单API。它将支持所有四种基本的CRUD操作(创建、读取、更新、删除)。



安装Vapor并创建项目



Vapor是Swift中最流行的Web框架。首先,通过Homebrew安装Vapor Toolbox:



brew install vapor


安装后,创建一个新项目:



vapor new TodoAPIcd TodoAPI


此命令将创建一个已配置好服务器的项目结构。在Xcode中打开项目:



open Package.swift


在Xcode中,您将看到标准的Vapor项目结构。主要代码位于Sources/App文件夹中。



创建数据模型



为了处理任务,我们需要一个模型。在Sources/App/Models文件夹中创建文件Todo.swift:



import Vaporimport Fluent

final class Todo: Model, Content { static let schema = "todos" @ID(key: .id) var id: UUID? @Field(key: "title") var title: String @Field(key: "is_completed") var isCompleted: Bool init() {} init(id: UUID? = nil, title: String, isCompleted: Bool = false) { self.id = id self.title = title self.isCompleted = isCompleted }}


我们使用Fluent——Swift的ORM,用于与数据库交互。在我们的示例中,为了简单起见,将使用SQLite。请注意Content协议——它允许自动将模型编码/解码为JSON。



配置迁移和数据库



现在为我们的模型创建迁移。在Sources/App/Migrations文件夹中添加文件CreateTodo.swift:



import Fluent

struct CreateTodo: Migration { func prepare(on database: Database) -> EventLoopFuture<Void> { return database.schema("todos") .id() .field("title", .string, .required) .field("is_completed", .bool, .required) .create() } func revert(on database: Database) -> EventLoopFuture<Void> { return database.schema("todos").delete() }}


在文件configure.swift中,添加数据库和迁移的注册:



import Fluentimport FluentSQLiteDriver

public func configure(_ app: Application) throws { app.databases.use(.sqlite(.file("db.sqlite")), as: .sqlite) app.migrations.add(CreateTodo())

博客

书籍推荐