Como escrever uma REST API 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 REST API em Swift é rápido e moderno

O desenvolvimento de aplicativos móveis para iOS e macOS exige não apenas uma interface bonita, mas também um backend de servidor confiável. REST API (Representational State Transfer) continua sendo o padrão de facto para troca de dados entre cliente e servidor. Se você já programa em Swift para o ecossistema Apple, criar a API na mesma linguagem é um passo lógico. Isso permite reutilizar modelos de dados, evitar duplicação de código e implementar mudanças mais rapidamente.

Neste artigo, mostraremos como escrever uma REST API completa em Swift usando o framework Vapor — o framework web mais popular para Swift. Você aprenderá como configurar o projeto, criar rotas, processar JSON e iniciar o servidor. Todo o processo levará no máximo 30 minutos. Pronto? Vamos lá!



1. Preparação do ambiente e instalação do Vapor

Antes de escrever código, certifique-se de ter as ferramentas necessárias instaladas. Para trabalhar com Vapor, você precisará do Swift 5.9 ou superior (recomenda-se Swift 6). Você também precisará de um terminal e um editor de código (Xcode ou VS Code).

Instalação do Vapor Toolbox

Vapor Toolbox é um utilitário de linha de comando que simplifica a criação e o gerenciamento de projetos. Instale-o via Homebrew:

brew install vapor

Se o Homebrew não estiver instalado, baixe-o em brew.sh. Após a instalação, verifique a versão:

vapor --version

Criação de um novo projeto

Abra o terminal e execute o comando:

vapor new MyAPI --template=api

A flag --template=api cria uma estrutura básica para REST API sem arquivos desnecessários. Navegue até a pasta do projeto:

cd MyAPI

Agora abra o projeto no Xcode:

open Package.swift

Ou use qualquer outro editor. Pronto! Você tem um template limpo do Vapor.



2. Estrutura básica: models, controllers e rotas

Vapor usa a arquitetura MVC (Model-View-Controller), adaptada para desenvolvimento server-side. Criaremos uma API simples para gerenciar uma lista de tarefas (To-Do list).

Criação do model

O model é uma estrutura que descreve os dados. Na pasta Sources/App/Models/, crie o arquivo Todo.swift:

import Fluentimport Vapor

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 }}

Usamos Fluent — ORM do Vapor para trabalhar com bancos de dados. O model é automaticamente serializado para JSON graças ao protocolo Content.

Criação do controller

O controller contém a lógica de processamento das requisições. Crie o arquivo Sources/App/Controllers/TodoController.swift:

import Vaporimport Fluent

struct TodoController: RouteCollection { func boot(routes: RoutesBuilder) throws { let todos = routes.grouped("todos") todos.get(use: index) todos.post(use: create) todos.group(":todoID") { todo in todo.delete(use: delete) } } // GET /todos — obter todas as tarefas func index(req: Request) async throws -> [Todo] { try await Todo.query(on: req.db).all() } // POST /todos — criar uma tarefa func create(req: Request) async throws -> Todo { let todo = try req.content.decode(Todo.self) try await todo.save(on: req.db) return todo } // DELETE /todos/:id — deletar uma tarefa func delete(req: R

Blogs

Book Recommendations