Swift
Integre a API de consulta de CPF usando o SDK oficial do CPFHub.io para Swift 5.9+.
Instalação
Swift Package Manager
Adicione ao Package.swift:
Swift
dependencies: [
.package(url: "https://github.com/cpfhub/cpfhub-swift.git", from: "1.0.0")
],
targets: [
.target(name: "SeuApp", dependencies: ["CPFHub"])
]Ou via Xcode: File → Add Packages → cole a URL do repositório.
Configuração
⚠
Nunca inclua a API Key em apps iOS/macOS
Chamadas à API devem ser feitas pelo seu backend. Nunca inclua a API Key em código que será distribuído no App Store.
Configure via variável de ambiente no servidor:
bash
export CPFHUB_API_KEY=sua_api_key_aquiPrimeira consulta (Swift server / CLI)
Swift
import CPFHub
let client = CPFHubClient(apiKey: ProcessInfo.processInfo.environment["CPFHUB_API_KEY"]!)
let result = try await client.lookup("12345678909")
print(result.data.name) // "Fulano de Tal"
print(result.data.gender) // "M"
print(result.data.birthDate) // "15/06/1990"Tratamento de erros
Swift
import CPFHub
let client = CPFHubClient(apiKey: ProcessInfo.processInfo.environment["CPFHUB_API_KEY"]!)
do {
let result = try await client.lookup("12345678909")
print(result.data.name)
} catch CPFHubError.notFound {
print("CPF não encontrado na base de dados")
} catch CPFHubError.invalidCPF {
print("CPF com dígitos verificadores inválidos")
} catch CPFHubError.rateLimit {
try await Task.sleep(nanoseconds: 1_000_000_000)
// retry
} catch {
throw error
}Uso com Vapor
Swift
import Vapor
import CPFHub
func routes(_ app: Application) throws {
let client = CPFHubClient(apiKey: Environment.get("CPFHUB_API_KEY")!)
app.get("cpf", ":cpf") { req async throws -> Response in
let cpf = req.parameters.get("cpf")!
do {
let result = try await client.lookup(cpf)
let body = try JSONEncoder().encode([
"ok": true,
"name": result.data.name,
"gender": result.data.gender,
"birthDate": result.data.birthDate,
])
return Response(status: .ok, body: .init(data: body))
} catch CPFHubError.notFound {
throw Abort(.notFound, reason: "CPF não encontrado")
}
}
}Links
Atualizado em 12 de maio de 2026