0Pricing
Swift Academy · Aula

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 /users

Retornando 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/delete e segmentos de caminho.
  • Capture valores dinâmicos com :param e leia-os por meio de req.parameters (tipados com require(_:as:)).
  • Leia itens de consulta em req.query e agrupe rotas com grouped.
  • Retorne textos, status ou conteúdo; lance Abort para 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

  1. Roteamento e Tratamento de Requisições
  2. Codificação de Conteúdo e JSON
  3. ORM Fluent e Modelos
  4. Middleware e Autenticação
← Voltar para Swift Academy