Nous contacter menu
// Développement iOS. Android et solutions numériques

Webservices et backend
//

Echange de données avec des webservices développés par Boreal

Vous êtes ici > Accueil > > Webservices et backend

WebServices et applications mobile

Définition et recommandations, 05/05/2015 - Version 1.0 – A. Munoz

Transport et protocole

Nous recommandons l'utilisation du protocole HTTPS pour l'échange des données. Un usage d'HTTP est clairement déconseillé, et ne sera plus possible sur les terminaux iOS à brève échéance.

Les WebSockets, un peu plus complexes à mettre en place sont à privilégier lors d'échange de petites quantité de données à des fréquences importantes (Ex : messagerie instantanée)

Format de données

Encodage de caractères

Merci d'utiliser UTF-8 pour l'ensemble des communications client/serveur. L'encodage en UTF8-MB4 est envisageable ponctuellement.

Compression

La latence sur les réseaux mobiles étant assez importante, nous recommandons de réduire autant que possible le nombre de connexions ouvertes en direction des WebServices. Nous recommandons donc de faire transiter le maximum d'informations pertinentes en peu d'appels client/serveur.

L'utilisation de la compression HTTP est très fortement conseillée. Il est possible d'utiliser GZIP, ZLIB ou DEFLATE indifféremment.

Formatage

Le format JSON est le plus approprié de par sa syntaxe peu verbeuse et la compatibilité avec de très nombreux systèmes et langages.

Exemple :


{
    "bin":              "457737",
    "brand":            "VISA",
    "sub_brand":        "",
    "country_code":     "FR",
    "country_name":     "France",
    "bank":             "BANK TEST",
    "card_type":        "CREDIT",
    "card_category":    "CREDIT",
    "latitude":         46.84,
    "longitude":        2.479,
    "query_time":       "338.451μs"
} 

Vous pouvez utilisez sans distinctions des tirets_bas ou une notation en CamelCase pour le nom de vos propriétés. Il est également possible d'utiliser le format XML. L'encapsulation CDATA est nécessaire pour tous balises contenant des caractères spéciaux.

Nous déconseillons l'utilisation de SOAP dans la grande majorité des cas. L'entête Content-Type doit contenir la valeur appropriée: text/json ou text/xml

Exemple en PHP :

header('Content-type: text/json; charset=utf-8');

Paramètres et arguments

Nous recommandons de transmettre les paramètres en POST par défaut. Il est possible d'utiliser les méthodes étendues de REST comme PUT ou DELETE, à définir avec nous. Nous déconseillons l'utilisation de GET en général pour cet usage.

Médias

Nous préconisons l'utilisation des formats JPG ou PNG pour le transfert d'image vers des terminaux mobiles. Une optimisation via les outils suivants peut apporter un réel gain de réactivité à l'application:

Exemple de script BASH pour optimiser vos images dans le dossier courant :


#!/bin/sh
find . -name '*.png' -exec optipng -o7 {} \;
find . -name '*.png' -exec pngout {} \;
find . -name '*.jpg' -exec jpegoptim --strip-all {} \;
find . -name '*.jpg' -exec jpegtran -v -optimize -outfile "{}" "{}" \;

Ces utilitaires d'optimisation ne sont normalement pas destructifs, mais nous avons tout de même constaté des différences visuelles avec l'image d'origine notamment pour les dégradés en PNG. Conservez les originaux pour le web classique.

Chiffrage, sécurité et authentification

Chiffrage

Voici les critères à respecter pour l'utilisation d'un certificat SSL

  • TLS 1.2
  • Forward Secrecy actif
  • SHA-2

Si un chiffrage des données est nécessaire, au-delà de l'utilisation d'HTTPS, nous recommandons l'utilisation d'AES-256 avec les paramètres suivants :

  • Longueur de clef : 128
  • Mode CBC
  • Padding PKCS7
  • Utilisation d'un IV unique pour chaque chaîne chiffrée.

Sécurité et authentification

L'utilisation de session n'est pas possible dans un environnement mobile. Nous recommandons la création lors de l'authentification d'un jeton aléatoire, qui sera transmis avec chaque requête ultérieure pour confirmer l'authentification.

Merci de ne pas effectuer de contrôle sur l'adresse IP pour maintenir l'authentification, en effet un terminal mobile est appelé à changer d'adresse réseau très fréquemment, et n'expose son adresse IP réelle que très rarement sur les réseaux 3g/4g

Pour toute question, n’hésitez pas à contacter notre service technique au 01.75.43.87.24