Como escrever uma API REST em Swift em 30 minutos

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Introdução: por que Swift para REST API?

Swift não é apenas uma linguagem para aplicativos móveis. Graças a frameworks como Vapor e Kitura, você pode criar REST API completas para o lado do servidor. Isso é especialmente útil se seu aplicativo iOS já usa Swift: você pode escrever tanto o cliente quanto o servidor na mesma linguagem, reduzindo o tempo de desenvolvimento e simplificando a manutenção do código.

Neste artigo, criaremos uma REST API simples em Swift usando o framework Vapor — a solução mais popular para desenvolvimento server-side em Swift. Configuraremos o servidor, adicionaremos rotas para operações CRUD e o testaremos. Todo o processo levará no máximo 30 minutos.

Requisitos: macOS ou Linux, Swift 5.8+ (ou superior) instalado, compreensão básica de HTTP e JSON.



Passo 1: Instalação e configuração do projeto Vapor

O Vapor fornece uma ferramenta CLI conveniente para início rápido. Instale-a via Homebrew:

brew install vapor

Em seguida, crie um novo projeto:

vapor new MyAPI --template=apicd MyAPI

A flag --template=api cria um esqueleto com estrutura mínima para REST API. Após criar o projeto, abra-o no Xcode (ou qualquer editor):

open Package.swift

A estrutura do projeto inclui:

  • Sources/App/ — lógica principal (rotas, controladores, modelos).
  • Sources/App/routes.swift — registro de rotas.
  • Sources/App/configure.swift — configuração da aplicação.
  • Package.swift — dependências (Vapor já incluído).

Se você usa Xcode, ele baixará as dependências automaticamente. No terminal, execute vapor build para compilar.



Passo 2: Criação do modelo de dados e banco de dados

Para a REST API, precisamos de um modelo. Vamos criar um modelo simples Task (tarefa) com campos: id, title, completed. No Vapor, modelos geralmente herdam de Model (Fluent ORM).

Crie o arquivo Sources/App/Models/Task.swift:

import Fluentimport Vapor

final class Task: Model, Content { static let schema = "tasks"

@ID(key: .id) var id: UUID?

@Field(key: "title") var title: String

@Field(key: "completed") var completed: Bool

init() {}

init(id: UUID? = nil, title: String, completed: Bool = false) { self.id = id self.title = title self.completed = completed }}

Agora, crie uma migração para a tabela no banco de dados. Crie o arquivo Sources/App/Migrations/CreateTask.swift:

import Fluent

struct CreateTask: Migration { func prepare(on database: Database) -> EventLoopFuture<Void> { database.schema("tasks") .id() .field("title", .string, .required) .field("completed", .bool, .required) .create() }

func revert(on database: Database) -> EventLoopFuture<Void> { database.schema("tasks").delete() }}

Adicione a migração no configure.swift:

app.migrations.add(CreateTask())

Por padrão, o Vapor usa SQLite (arquivo na pasta do projeto). Se quiser PostgreSQL ou MySQL — altere as configurações no configure.swift, mas para início rápido, SQLite é perfeito.



Passo 3: Registro das rotas da REST API

Agora, crie um controlador para processar as requisições. Crie o arquivo Sources/App/Controllers/TaskController.swift:

import Vaporimport Fluent

struct TaskController: RouteCollection { func boot(routes: RoutesBuilder) throws { let tasks = routes.grouped("tasks")

tasks.get(use: index) // GET /tasks tasks.post(use: create) // POST /tasks tasks.grou

Blogs

Book Recommendations