REST API Calls en Swift 3
Qu’est ce qu’une API
Une API (“Application Programming Interface”) c’est ce qui va permettre à deux systèmes informatiques de communiquer entre eux de manière automatique. C’est qui va en quelque sorte permettre de faire des requêtes avec Swift sur un serveur, via l’API. Cela va donc tout simplifier.
Qu’est ce que Swift ?
Le Swift est une langage orienté objet développé par Apple en 2014. Il remplace l’Objective-C qui était utilisé pour le développement d’application pour iOS, macOS.
Dans cet article, nous allons principalement nous concentrer sur le méthode POST et GET.
Effectuer une simple requête vers une API
Pour effectuer une requête vers une API, on peut commencer par créer une classe qui lui est dédiée, ce qui va simplifier à la fois votre code, ainsi que faciliter les modifications que l’on pourrait apporter.
import Foundation
class API {
static let baseUrl = “yourURL”
}
Dans cet exemple, on indique la base de l’url de l’API que l’on utilisera dans toutes nos requêtes. Nous verrons comment appeler cette variable ci-dessous.
func APIRequest() {let url = “\(API.baseUrl)…”let request = NSMutableURLRequest(url: URL(string: url)!)let requestAPI = URLSession.shared.dataTask(with: request as URLRequest) {data, response, error inif (error != nil) {print(error!.localizedDescription) // On indique dans la console ou est le problème dans la requête}if let httpStatus = response as? HTTPURLResponse , httpStatus.statusCode != 200 {print(“statusCode devrait être de 200, mais il est de \(httpStatus.statusCode)”)print(“réponse = \(response)”) // On affiche dans la console si le serveur ne nous renvoit pas un code de 200 qui est le code normal}let responseAPI = NSString(data: data!, encoding: String.Encoding.utf8.rawValue)print(“responseString = \(responseAPI)”) // Affiche dans la console la réponse de l’APIif error == nil {// Ce que vous voulez faire.}}requestAPI.resume()}
On crée une variable url qui contient notre url de base aussi que l’extention de la page souhaitée. Ensuite on crée donc un requête vers l’API et nous verrons la réponse dans la console.
Requête GET
La requête HTTP méthode “GET” va nous permettre une requête vers l’API indiquant que l’on souhaite récupérer des informations sur l’API. Elle s’effectue comme ceci :
func APIRequest() {
let url = "\(API.baseUrl)..."
let request = NSMutableURLRequest(url: URL(string: url)!)
request.httpMethod = "GET"
let requestAPI = URLSession.shared.dataTask(with: request as URLRequest) {data, response, error in
if (error != nil) {
print(error!.localizedDescription) // On indique dans la console ou est le problème dans la requête
}
if let httpStatus = response as? HTTPURLResponse , httpStatus.statusCode != 200 {
print("statusCode devrait être de 200, mais il est de \(httpStatus.statusCode)")
print("réponse = \(response)") // On affiche dans la console si le serveur ne nous renvoit pas un code de 200 qui est le code normal
}
let responseAPI = NSString(data: data!, encoding: String.Encoding.utf8.rawValue)
print("responseString = \(responseAPI)") // Affiche dans la console la réponse de l'API
if error == nil {
// Ce que vous voulez faire.
}
}
requestAPI.resume()
}
Il suffit juste de rajouter à la variable request “httpMethod” avec la valeur “GET”.
Requête POST
La requête HTTP méthode “POST” va nous permettre une requête vers l’API indiquant que l’on souhaite envoyer voire modifier des informations sur l’API. Elle s’effectue comme ceci :
func APIRequest() {
let url = "\(API.baseUrl)..."
let request = NSMutableURLRequest(url: URL(string: url)!)
request.httpMethod = "POST"
let requestAPI = URLSession.shared.dataTask(with: request as URLRequest) {data, response, error in
if (error != nil) {
print(error!.localizedDescription) // On indique dans la console ou est le problème dans la requête
}
if let httpStatus = response as? HTTPURLResponse , httpStatus.statusCode != 200 {
print("statusCode devrait être de 200, mais il est de \(httpStatus.statusCode)")
print("réponse = \(response)") // On affiche dans la console si le serveur ne nous renvoit pas un code de 200 qui est le code normal
}
let responseAPI = NSString(data: data!, encoding: String.Encoding.utf8.rawValue)
print("responseString = \(responseAPI)") // Affiche dans la console la réponse de l'API
if error == nil {
// Ce que vous voulez faire.
}
}
requestAPI.resume()
}
Il suffit juste de rajouter à la variable request “httpMethod” avec la valeur “POST”.
Avec la méthode POST, il faut donc ajouter ce que l’on souhaite envoyer comme informations. Pour se faire, il suffit d’ajouter la variable requête un httpBody qui va contenir toutes les informations que nous voulons transmettre à l’API.
let postString = "ce que vous voulez envoyer à l'API'"
request.httpBody = postString.data(using: String.Encoding.utf8)
On précise ici que le postString que l’on envoie est en utf8, pour éviter tout soucis.
Requête avec Headers
On peut aussi ajouter des headers dans notre requête, aussi bien avec la méthode POST que GET
func APIRequest() {
let url = "\(API.baseUrl)..."
let request = NSMutableURLRequest(url: URL(string: url)!)
request.addValue("votreValeur", forHTTPHeaderField: "indicationDeLaValeur")
let requestAPI = URLSession.shared.dataTask(with: request as URLRequest) {data, response, error in
if (error != nil) {
print(error!.localizedDescription) // On indique dans la console ou est le problème dans la requête
}
if let httpStatus = response as? HTTPURLResponse , httpStatus.statusCode != 200 {
print("statusCode devrait être de 200, mais il est de \(httpStatus.statusCode)")
print("réponse = \(response)") // On affiche dans la console si le serveur ne nous renvoit pas un code de 200 qui est le code normal
}
let responseAPI = NSString(data: data!, encoding: String.Encoding.utf8.rawValue)
print("responseString = \(responseAPI)") // Affiche dans la console la réponse de l'API
if error == nil {
// Ce que vous voulez faire.
}
}
requestAPI.resume()
}
Il suffit juste de rajouter à la variable request “addValue” avec la valeur et l’entête de votre header. Un exemple d’utilisation du header est par exemple un token. Ce token va être l’identifiant de l’utilisateur qui va faire une requête sur l’API. Ainsi grâce à ce token, l’API va lui renvoyer une réponse en fonction de son token. Par exemple, si l’utilisateur souhaite afficher les informations de son compte, le token va permettre de l’identifier dans la requête, et donc afficher automatiquement les informations lui correspondant.