Roteamento e Tratamento de Requisições
Defina rotas e trate requisições HTTP.
Roteamento e Tratamento de Requisições é uma aula grátis de Swift Academy no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Swift Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Swift Academy inclui 4 aulas no total.
O que é Vapor?
Vapor é um popular framework web Swift para servidores, criado sobre o SwiftNIO. Ele permite escrever backends HTTP — APIs e sites — inteiramente em Swift, compartilhando a linguagem e até mesmo os modelos com seu app iOS.
import Vapor
let app = try await Application.make(.detect())A aplicação e as rotas
O objeto Application é o núcleo de um servidor Vapor. Você registra rotas nele: mapeamentos de um método HTTP e um caminho para um bloco de código manipulador que retorna uma resposta.
app.get("hello") { req in
"Hello, world!"
}Auxiliares de métodos HTTP
Vapor oferece um auxiliar para cada verbo HTTP: app.get, app.post, app.put, app.patch e app.delete. Cada um recebe componentes do caminho e um manipulador.
app.post("users") { req in
"Created a user"
}
app.delete("users") { req in
"Deleted a user"
}Segmentos de caminho
Passe vários segmentos de texto para criar caminhos aninhados. A chamada abaixo responde a GET /api/v1/status.
app.get("api", "v1", "status") { req in
"OK"
}Parâmetros de rota
Use um segmento precedido por dois-pontos para capturar um valor dinâmico. Leia-o na requisição com req.parameters.get(_:). No exemplo abaixo, solicitar /users/42 captura 42.
app.get("users", ":id") { req -> String in
let id = req.parameters.get("id") ?? "unknown"
return "User id is " + id
}Parâmetros tipados
Você pode converter um parâmetro para um tipo concreto passando o tipo para get. Se a conversão falhar, o Vapor retornará automaticamente um 404, mantendo os manipuladores limpos.
app.get("posts", ":id") { req -> String in
let id = try req.parameters.require("id", as: Int.self)
return "Post number " + String(id)
}Parâmetros de consulta
Leia os itens de consulta da URL por meio de req.query. Para /search?term=swift, você pode decodificar o termo diretamente. Valores opcionais ausentes simplesmente retornam um valor nulo.
app.get("search") { req -> String in
let term = try req.query.get(String.self, at: "term")
return "Searching for " + term
}Grupos de rotas
Agrupe rotas relacionadas sob um prefixo compartilhado com app.grouped(...). Isso evita repetir componentes do caminho e mantém os endpoints relacionados juntos.
let users = app.grouped("users")
users.get { req in "List users" } // GET /users
users.post { req in "Create user" } // POST /usersRetornando diferentes tipos de resposta
Um manipulador pode retornar uma String, um HTTPStatus, um tipo Content personalizado ou uma Response totalmente construída. O Vapor sabe como codificar cada um deles em uma resposta HTTP.
app.delete("cache") { req -> HTTPStatus in
// clear something
return .noContent // 204
}Lançando erros com Abort
Lance Abort(_:) para interromper uma requisição com um status HTTP específico e um motivo opcional. O Vapor o transforma em uma resposta JSON de erro limpa.
app.get("secret") { req -> String in
guard req.headers.first(name: "X-Key") == "open" else {
throw Abort(.forbidden, reason: "Missing key")
}
return "Welcome"
}Manipuladores assíncronos
O Vapor 4+ oferece suporte completo a async/await. Marque o bloco de código manipulador como assíncrono e use try await nele para operações de banco de dados ou de rede.
app.get("ping") { req async throws -> String in
try await Task.sleep(for: .milliseconds(10))
return "pong"
}Verificação rápida: roteamento
Confirme seus conhecimentos sobre roteamento.
Recapitulação: roteamento e tratamento de requisições
Agora você já pode configurar um servidor Vapor:
- Registre rotas com
app.get/post/put/patch/deletee segmentos de caminho. - Capture valores dinâmicos com
:parame leia-os por meio dereq.parameters(tipados comrequire(_:as:)). - Leia itens de consulta em
req.querye agrupe rotas comgrouped. - Retorne textos, status ou conteúdo; lance
Abortpara erros; use manipuladores assíncronos.
Perguntas Frequentes
A aula “Roteamento e Tratamento de Requisições” é grátis?
Sim — o texto completo de “Roteamento e Tratamento de Requisições” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Swift Academy, atualize para CoddyKit PRO. O curso de Swift Academy inclui 4 aulas no total.
O que vou aprender em “Roteamento e Tratamento de Requisições”?
Defina rotas e trate requisições HTTP. Você pratica Swift Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Swift Academy?
Nenhuma experiência prévia é necessária. Swift Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.
Quanto tempo leva a aula “Roteamento e Tratamento de Requisições”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Swift Academy?
Sim. Cada aula de Swift Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Roteamento e Tratamento de Requisições
- Codificação de Conteúdo e JSON
- ORM Fluent e Modelos
- Middleware e Autenticação