LacerdaPara fazer requisição em Swift é um processo simples, mas precisamos entender alguns pontos antes...
Para fazer requisição em Swift é um processo simples, mas precisamos entender alguns pontos antes para poder fazer sentido Todo o processo.
Para explicar, eu dividi em 3 partes. A primeira trata sobre o endereço do recurso que queremos acessar (url do backend/servidor ou arquivos locais), a segunda, sobre o objeto que detém os dados da requisição (verbo http, body, header), e a última sobre como de fato realizar a requisição.
Antes de tudo, é preciso saber para onde a requisição deve ir, ou seja, qual é a url do backend. Vou Usar como exemplo a seguinte url: https://exemplo.com.br/auth/login
Então preciso fazer uma req para o backend chamando a rota de login.
Com essa informação, agora podemos criar o endereço do recurso que é a classe URL do swift. Veja o exemplo abaixo e troque o valor da url pela sua:
let url = URL(string: "https://exemplo.com.br/auth/login")!
Se o termo "endereço do recurso" parecer pouco familiar, pense na URL como o endereço de destino da requisição.
Com o endereço do recurso criado, agora devemos criar o objeto que contém os dados da requisição (URLRequest), ele recebe como parâmetro o que criamos anteriormente. Veja o exemplo abaixo:
var request = URLRequest(url: url)
Como dito anteriormente, esse objeto URLRequest nos permite definir o método HTTP, os headers e o corpo (body) da requisição. Veja abaixo como definir essas informações.
// Aqui definimos o verbo HTTP.
// Se não definirmos outro método, a requisição utiliza GET como método HTTP padrão.
request.httpMethod = "POST"
// Dizendo qual é o header da request
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
// LoginModel é uma struct que implementa Codable
// e possui os dados necessários para o login
let login = LoginModel(email: email, password: password)
do {
// Já aqui, vamos tentar criar um JSON a partir da struct acima.
let jsonData = try JSONEncoder().encode(login)
// Com o JSON criado, podemos adicionar no corpo da request o JSON criado.
request.httpBody = jsonData
} catch {
print("Erro ao criar JSON:", error.localizedDescription)
return
}
Fizemos todos esses passos, mas ainda falta o último que é de fato onde a requisição vai ser iniciada.
Com a URLRequest finalizada, agora podemos criar o objeto que é responsável pela execução da requisição. Esse é o URLSession. Veja o exemplo abaixo para implementar:
// Criado o objeto e passando o objeto request que criamos
let task = URLSession.shared.dataTask(with: request) { data, response, error in
// Aqui dentro, é possível saber o que o servidor respondeu
// Qual foi o status HTTP, os dados retornados, possíveis erros etc
}
// Até esse momento, apenas configuramos a requisição. É o resume() que inicia a execução da task.
task.resume()
Com esses passos, você aprendeu como fazer uma requisição com Swift e o melhor, antes de só fazer, pode entender a base do funcionamento.