Implémenter une API personnalisée pour un service REST Façade
Lorsque vous développez une application mobile, vous commencez généralement par la couche d'interface utilisateur, puis vous connectez votre application à une autre application à l'aide des services Web REST. Cette approche fonctionne bien pour les applications petites ou simples. Lorsque les applications sont plus grandes et que vous souhaitez vous connecter à plusieurs services back-end, vous pouvez introduire par inadvertance des problèmes de performances et de sécurité.
Il est recommandé de commencer à créer une couche API façade entre les services back-end externes et l'interface utilisateur pour réduire le nombre d'appels aux services back-end, si possible. Par exemple, votre application mobile peut exécuter un seul appel à la couche API façade qui gère les appels vers d'autres services REST et consolide toutes les données entrantes en une seule réponse à l'application mobile.
Créer une API personnalisée complète
Pour créer une API personnalisée complète à l'aide d'Oracle Mobile Hub, procédez comme suit :
Cliquez sur et sélectionnez Développement, puis des API dans le menu latéral. Si une API a déjà été créée (dans un état Brouillon ou Publié), vous verrez la liste des API. S'il n'existe aucune API personnalisée, une page avec le bouton Nouvelle API apparaît. Cliquez sur l'API que vous avez déjà créée ou sur Nouvelle API pour commencer.
Définir des adresses
Vous créez des ressources pour définir les adresses de votre API. Une ressource est l'objet de l'API. Il comporte un type, des données qui lui sont associées, une relation avec d'autres ressources et contient une ou plusieurs méthodes agissant dessus. Une ressource peut se trouver presque : une image, un fichier texte, un ensemble d'autres ressources, une transaction logique, une procédure, etc.
Lorsque vous créez une méthode pour une ressource, un symbole apparaît sous le lien Méthodes pour cette méthode. Vous pouvez voir immédiatement les méthodes définies pour une ressource si vous devez examiner une définition de ressource. Cliquez sur une icône pour accéder directement à cette définition de méthode.
Vous pouvez effacer l'encombrement pour localiser plus rapidement une ressource en passer en mode compact (à droite de Nouvelle ressource ). L'affichage compact masque la description, le type de ressource et le chemin de la ressource.
Ajout de méthodes aux ressources
Les méthodes sont des actions pouvant être effectuées sur une ressource. La page Méthodes affiche une méthode à la fois. Après avoir défini au moins deux méthodes, vous pouvez cliquer sur l'icône d'une méthode en haut de la page pour visualiser ses détails.
Après avoir défini des méthodes pour la ressource, vous pouvez définir les demandes et les réponses correspondantes.
Définir une demande pour la méthode
Maintenant que vous avez sélectionné une méthode, définissez la demande à laquelle vous effectuez le service auquel vous voulez vous connecter. Par exemple, si vous avez sélectionné une méthode POST
, vous pouvez désormais définir ce que vous souhaitez créer. Pour ce faire, ajoutez des paramètres et un corps de demande contenant la description des données à envoyer au service.
- Cliquez sur Demande pour définir une demande.
- Cliquez sur Ajouter un paramètre et sélectionnez un type de paramètre : Requête ou En-tête. Sélectionnez Obligatoire si le paramètre est obligatoire pour la méthode.
- Selon la méthode sélectionnée, cliquez sur Ajouter un type de support et définissez le corps de la méthode. Le corps contient les données que vous envoyez au serveur. Par exemple, si vous définissez une méthode
POST
, vous devrez définir l'article que vous créez, comme une nouvelle liste de clients ou une demande de service. Si vous définissez une méthodeGET
, vous n'avez pas besoin d'envoyer de corps de méthode pour ne pas avoir à indiquer de type de support. - Cliquez sur Ajouter un type de support pour ajouter des types de support supplémentaires. Si vous décidez de ne pas utiliser la méthode, cliquez sur X dans la bannière pour la supprimer.
Définir une réponse pour la méthode
En fonction de la demande, il se peut que vous n'ayez pas besoin d'une réponse. Une réponse décrit le processus de renvoi des résultats à partir du service. Vous pouvez définir une réponse qui vérifie que les données demandées ont été renvoyées ou si vous souhaitez recevoir une réponse indiquant si la demande a été reçue. La définition d'une réponse est semblable à la définition d'une demande. La différence principale est que vous devez sélectionner un code de statut pour vous faire savoir le résultat de la connexion.
POST
de la ressource audits
a été créée avec le code de statut 201 indiquant qu'une ressource a été créée avec succès. L'exemple affiche également le format de réponse renvoyée application/json
, un en-tête Location
qui a été ajouté et le corps du message contenant des données de simulation :responses:
201:
description: |
The request has been fulfilled and resulted in a new resource
being created. The newly created resource can be referenced
by the URI(s)returned in the entity of the response, with the
most specific URI for the resource given by a Location header
field.
headers:
Location:
displayName: Location
description: |
Identifies the location of the newly created resource.
type: string
example: |
/20934
required: true
body:
application/json:
example: |
{
"id": 20934,
"title": "Lynn's Leaking Water Heater",
"contact": {
"name": "Lynn Adams",
"street": "45 O'Connor Street",
"city": "Ottawa",
"postalcode": "a1a1a1",
"username": "johnbeta"
},
"status": "New",
"driveTime": 30,
"priority": "high",
"notes": "My notes",
"createdon": "2014-01-20 23:15:03 EDT",
"imageLink": "storage/collections/2e029813-d1a9-4957-a69a-fbd0d74331d77/objects/6cdaa3a8-097e-49f7--9bd2-88966c45668f?user=lynn1014"
}
Lorsque vous définissez votre réponse, vous pouvez choisir de tester vos adresses ou cliquer sur Adresses dans la barre de navigation pour revenir à la page principale Ressources. A partir de là, vous pouvez accéder à une autre page dans le concepteur d'API pour créer une racine, des types de ressource ou des caractéristiques, ou ajouter la documentation d'API.
Si vous décidez de ne pas utiliser la méthode, cliquez sur X dans la bannière pour la supprimer.
Créer une API de connecteur REST
Utilisez l'assistant API de connecteur REST pour créer, configurer et tester l'API de connecteur.
Pour obtenir une API de connecteur de travail de base, vous pouvez fournir un nom minime pour l'API de connecteur et une URL vers le service externe.
A partir de cet emplacement, vous pouvez effectuer les opérations suivantes :
-
Définissez des règles pour former des demandes ou des réponses spécifiques aux données auxquelles vous voulez accéder.
-
Configurer des stratégies de sécurité côté client pour le service auquel vous accédez.
-
Testez la connexion et testez les résultats des appels effectués vers celle-ci.
Vous devez créer une API personnalisée et une implémentation pour permettre aux applications d'appeler les API de connecteur, et de générer automatiquement l'API et l'implémentation. Pour ce faire manuellement, vous devez créer une API personnalisée avec les ressources appropriées, puis implémenter le code personnalisé.
Configurer un connecteur de base
Vous pouvez créer un connecteur fonctionnel en remplissant les deux premières pages de l'assistant API de connecteur REST.
-
Cliquez sur
et sélectionnez Développement, puis des API dans le menu latéral.
-
Cliquez sur REST (s'il s'agit de la première API de connecteur à créer) ou sur Nouveau connecteur, et dans la liste déroulante, sélectionnez REST.
-
Identifiez votre nouvelle API de connecteur REST en indiquant les éléments suivants :
-
Nom d'affichage d'API: nom tel qu'il apparaîtra dans la liste des API de connecteur.
-
Nom d'API: nom unique de l'API de connecteur.
Par défaut, ce nom est ajouté à l'URI de base relatif en tant que nom de ressource de l'API de connecteur. Vous pouvez visualiser l'URI de base sous le champ Nom d'API.
Autre qu'une nouvelle version de cette API de connecteur, aucune autre API de connecteur ne peut avoir le même nom de ressource.
-
Brève description : cette description sera affichée sur la page Connecteurs lorsque cette API est sélectionnée.
-
-
Cliquez sur Créer.
-
Dans la page Général de la boîte de dialogue API de connecteur REST, définissez les valeurs d'expiration :
-
Temporisation de la lecture HTTP: temps maximal (en millisecondes) nécessaire à l'attente de lecture des données. Si vous n'indiquez aucune valeur, la valeur par défaut de 20 secondes est appliquée.
-
Temporisation de connexion HTTP: temps (en millisecondes) consacré à la connexion à l'URL distante. Une valeur de 0mms indique qu'une temporisation infinie est autorisée.
Les valeurs de délai d'expiration HTTP doivent être inférieures à la stratégie
Network_HttpRequestTimeout
, qui possède une valeur par défaut de 40,000 ms.Remarque :
Si vous disposez d'un rôle d'administrateur de Cloud mobile en plus de votre rôle de développeur de services, vous pouvez ouvrir le fichierpolicies.properties
pour voir la valeur des stratégies réseau de l'environnement en cours à partir de la vue Administrateur. Sinon, demandez à l'administrateur Mobile Cloud de saisir les valeurs.
-
-
Cliquez sur Descripteur et saisissez les informations de connexion pour le service.
Si vous spécifiez une URL de descripteur Swagger, les ressources disponibles sont identifiées et affichées, et vous pouvez sélectionner celles de votre choix.
Remarque :
Seuls les ports d'accès Internet standard 80 et 443 sont pris en charge. Impossible d'établir la connexion à un service à l'aide d'un port personnalisé. -
Cliquez sur Enregistrer.
-
(Facultatif) Cliquez sur Test, sélectionnez les informations d'identification et de connexion d'authentification, puis effectuez des appels de test vers le service.
A partir de là, vous pouvez configurer le connecteur de l'une des manières suivantes :
-
(Si vous avez indiqué un descripteur sur la page Descripteur), accédez à la page Ressources et sélectionnez les méthodes pour les ressources affichées.
-
Définissez des règles.
-
Définir des stratégies de sécurité.
Pour être sûr que la configuration d'API de connecteur est valide, vous devez la tester de manière approfondie (pas seulement à partir de la page Test d'API de connecteur) avant de la publier. Cela signifie que vous devez également tester l'API personnalisée (avec son implémentation) qui utilise cette API de connecteur. Dans l'essentiel, si vous êtes prêt à publier l'API de connecteur, vous devez également être prêt à publier l'API personnalisée qui l'appelle.
Définir les règles
Définissez des règles pour définir les interactions entre votre application mobile et un service. Les règles permettent d'ajouter des valeurs de paramètre par défaut pour tous les appels aux ressources du service, d'appeler un chemin proxy spécifique et d'appeler pour certains types d'opération (verbes). Cela permet d'assurer une syntaxe cohérente de la chaîne d'URL, d'enregistrer le développeur de code personnalisé sans avoir à insérer ces valeurs et de suivre les différents appels via Analytics.
Vous pouvez créer des règles. Chaque règle peut avoir un ou plusieurs paramètres de type Query
et Header
.
Si aucune règle n'est appliquée, tous les appels sont transmis via le proxy au service existant.
La description de la règle que vous venez de définir apparaît dans la bannière Règle, juste au-dessus de la section Paramètres par défaut. Par exemple, supposons que les valeurs suivantes sont fournies :
-
URL distante =
https://maps.googleapis.com/maps/api/directions
/json ?origin=los+angeles&destination=seattle
-
URI local =
myMapAPI
-
Règle avec le paramètre suivant :
Query:key:A3FAEAJ903022
-
Méthodes HTTP
GET
etPUT
La description de la règle est la suivante :
Pour GET
vers https://maps.googleapis.com/maps/api/directions/json ?origin=los+angeles&destination=seattle
disponible dans myMapAPI/directions
, Inclure Query:key=A3FAEAJ903022
.
Si aucune règle n'a été créée, la description est la suivante :
Pour ALL METHODS to https /
maps.googleapis.com/maps/api/directions disponibles dans myMapAPI
, aucun paramètre par défaut ne sera appliqué.
Vous disposez désormais d'un URI de base qui correspond au service existant. En utilisant notre exemple :
mobile/connector/myMapAPI/directions/json ?origin=los+angeles&destination=seattle
correspond à https://maps.googleapis.com/maps/api/directions/json ?origin=los+angeles&destination=seattle
Configurer des stratégies de sécurité et remplacer les propriétés
Chaque stratégie de sécurité possède des propriétés, appelées remplacements, que vous pouvez configurer. L'une des raisons de remplacer une propriété de configuration de stratégie consiste à limiter le nombre de stratégies que vous devez conserver : au lieu de créer plusieurs stratégies avec des configurations légèrement variées, vous pouvez utiliser la même stratégie générique et remplacer des valeurs spécifiques pour répondre à vos besoins.
Pour sélectionner une stratégie de sécurité et définir les remplacements de stratégie, procédez comme suit :