Bonjour,
Hier, en travaillant sur les mobiles service, j’ai remarqué un nouvel onglet appelé API sur le portail :
Nous allons voir d’un peu plus près ce que nous propose cet onglet.
Tout d’abord, nous devons créer une nouvelle api personnalisé, cela va créer un nouveau point d’appel sur notre service mobile.
Création d’une nouvelle API
Lorsque vous créer une nouvelle api, vous devez renseigner les informations suivantes :
- Le nom de l’api, ce qui va crée un nouveau point d’appel sur l’url : https://{namespace}.azure-mobile.net/api/{nameOfTheApi}
- Les permissions sur les méthods HTTP. On retrouve les permissions de bases disponibles lorsque l’on travaille sur les tables. (Ie: Everyone, Application Key, Authenticated User, Admin & Script)
Nous pouvons voir que nous avons une méthode de plus qui est disponible, c’est la méthode PUT.
Configurer l’Api
Une fois que vous avez créer votre API, vous avez accès à un script (oui un seul) qui contient l’ensemble de votre code. Point Négatif, ca fait un fichier de code plus gros, point positif : partage des functions entre les différentes méthodes.Actuellement, lorsque vous travailler sur votre méthode GET, si vous définissez une fonction, il faut la redéfinir dans votre Méthode POST si vous souhaiter utiliser la même. Conséquence, la maintenance est plus difficile.
Le script de base est composé du code suivant :
exports.post = function(request, response) { // Use "request.service" to access features of your mobile service, e.g.: // var tables = request.service.tables; // var push = request.service.push; response.send(200, "Hello World"); };
Etendre l’api
Si vous voulez ajouter une méthode, vous avez juste à ajouter une fonction de type Exportable et qui utilise le mot clé de la méthode. Par exemple, si vous voulez ajouter la méthode GET, ajouter le code suivant :
exports.get = function(request, response){ response.send(200, "Hello World from Get Method"); }
Utilisation des capacités des Mobiles Services
Azure Mobile Service vous propose des facilités pour faire par exemple du CRUD sur les tables SQL ou bien de la notification PUSH, tout cela reste accessible dans les scripts d’API. Ces helpers sont contenus dans l’objet Request. Vous avez donc accès aux objets :
- tables en utilisant request.services.tables
- push en utilisant using request.services.push
Il ne semble pas y avoir d’autre service pour l’instant.
J’en entend certains dire, ben oui mais et l’authentification ?
Vous avez accès à User à partir de l’objet Request directement :
- user = request.user
et vous avez donc accès aux informations de base disponibles avec l’objet User des scripts Mobile Service.
Importer des scripts ou fonctions d’une autre api
C’est peut être une des meilleurs choses disponible, nous pouvons effectivement utiliser le mécanismes des exports de fonction pour les rendre disponible à d’autre API. En some, c’est un petit peut la fonctionnalité de “Script Partagé”.
Pour vérifier cela, nous allons créer une nouvelle fonction dans une autre api que nous allons appel testExternalFunction et nous ajoutons une fonction exportable :
exports.myfunction = function(){ return "hello World from my function"; };
Une fois cela fait, nous utilisons la fonction require() pour importer la fonction dans notre script.
exports.get = function(request, response){ //var scriptToImport = require("./{scriptToImport}"); //or var scriptToImport = require("../api/{scriptToImport}"); var scriptToImport = require("../api/testexternalfunction"); var result = scriptToImport .myfunction(); response.send(200, result); }
Il reste quelques éléments qui ne semble pas disponible (comme query qui existe mais ne contient pas encore tout l’intelligence de l’object query des scripts de base, ou j’ai pas encore trouvé), mais cette nouvelle fonctionnalité est très intéressante pour la maintenabilité du code et des éventuellement des performances.
Enjoy