Création d'un client EMS Pets
Remonter à Tutoriel : Utilisation d'un client EMS pour accéder à une ressource EMS personnalisée
Vous pouvez créer une application client EMS pour vous connecter au serveur EMS via l'API REST que le serveur EMS expose.
Pour accéder aux informations et aux ressources du serveur EMS depuis la base de données EMS, l'application client EMS Pets de ce tutoriel utilise la ressource EMS Pets personnalisée développée.
Dans ce tutoriel, vous avez besoin des composants suivants dans votre application client EMS :
- Le composant TEMSProvider est utilisé pour configurer la connexion au serveur EMS.
- Le composant TBackendEndpoint est utilisé pour accéder à une méthode particulière de point de terminaison de ressource EMS depuis votre application client EMS (l'une des méthodes de l'API REST du serveur EMS). Une application client EMS appelle TBackendEndpoint pour exécuter un GET ou POST JSON depuis/vers le serveur EMS.
- Remarque : Chaque composant TBackendEndpoint est configuré pour accéder à un point de terminaison de ressource EMS. Ajoutez autant de composants TBackendEndpoint que d'accès aux méthodes de point de terminaison de ressource EMS.
Pour effectuer un appel à un point de terminaison de ressource EMS, vous devez sélectionner la méthode adéquate dans la propriété Method du composant TBackendEndpoint.
Sommaire
Création d'une application client EMS
- Créez une nouvelle application multi-périphérique :
- Pour Delphi : Fichier > Nouveau > Application multi-périphérique - Delphi
- Dans la palette d'outils, recherchez un composant TEMSProvider et déposez-le sur la fiche TForm.
- Dans l'inspecteur d'objets, configurez les paramètres du serveur EMS en fonction de la configuration du serveur EMS :
- URLHost :
localhost
- URLPort :
8080
- URLProtocol :
http
- URLHost :
- Cliquez sur le bouton Tester la connexion. Si la connexion est correctement configurée, vous obtenez un message avec la version en cours du serveur EMS.
Appel d'une méthode de point de terminaison de ressource
Vous pouvez appeler les points de terminaison de ressource du serveur EMS pour récupérer ou définir des données par le biais d'appels d'API REST à partir de votre application client EMS.
Dans ce tutoriel, vous allez utiliser les points de terminaison de la ressource personnalisée qui étendent la fonctionnalité du serveur EMS telle que décrite dans Création de la ressource EMS Pets. Les méthodes des points de terminaison de ressource EMS sont définies dans Ressource EMS Pets.
- Dans votre application client EMS, déposez un composant TBackendEndpoint sur la fiche TForm.
- Dans l'inspecteur d'objets, renommez le composant TBackendEndpoint en BackendEndpointGetPets.
- Dans l'inspecteur d'objets, définissez les paramètres suivants du TBackendEndpoint afin d'utiliser la ressource du serveur EMS :
- Provider : Dans la liste déroulante, sélectionnez
EMSProvider1
. - Resource :
Pets
. - Resource Suffix : Laissez ce paramètre vide pour le tutoriel.
- Method :
rmGET
.
- Provider : Dans la liste déroulante, sélectionnez
- Si les paramètres sont correctement définis, vous obtiendrez une réponse de réussite du serveur EMS lors du test de configuration du composant TBackendEndpoint. Vous pouvez effectuer l'une des opérations suivantes :
- Dans l'inspecteur d'objets, cliquez sur Exécuter.
- Cliquez avec le bouton droit sur le composant TBackendEndpoint | Exécuter. Si la réponse du point de terminaison est correctement reçue, vous obtenez le message suivant :
Response: 200 - OK
- Dans la fenêtre du serveur EMS, le volet journal affiche la requête de version.
- Remarque : Vous devez ajouter autant de TBackendEndpoint que de méthodes de point de terminaison de ressource EMS définies dans Ressource EMS Pets.
Name Provider Resource Resource Suffix Method BackendEndpointGetPet
EMSProvider1
Pets
{élément}
rmGET
BackendEndpointPostPets
EMSProvider1
Pets
(reste vide)
rmPOST
BackendEndpointPutPet
EMSProvider1
Pets
{élément}
rmPUT
BackendEndpointDeletePet
EMSProvider1
Pets
{élément}
rmDELETE
- Déposez un composant TMemo sur la fiche TForm.
- Renommez le TMemo en ServerResponse.
- Dans l'inspecteur d'objets, définissez pour le composant TMemo la propriété ReadOnly sur
True
. - Pour ce tutoriel, déposez cinq composants TButton sur votre fiche TForm.
- Dans l'inspecteur d'objets, définissez la propriété Name et Text de chaque bouton comme suit :
Button 1 Button 2 Button 3 Button 4 Button 5 Name
ButtonAddPet
ButtonDelete
ButtonGetPet
ButtonGetPets
ButtonUpdate
Text
Add Pet
Delete Pet
Get Pet
Get Pets
Update Pet
- Déposez quatre composants TEdit sur votre fiche. Renommez-les en
EId
,EName
,EKind
etEPetId
. - Déposez quatre composants TLabel sur votre fiche. Dans l'inspecteur d'objets, définissez la propriété Text de chacun d'eux sur
Id
,Name
,Kind
etPet Id
.
Ajout de la classe Pet à votre client EMS
Le client EMS utilise le même objet défini par l'utilisateur qui a été créé pour la ressource EMS Pet.
Ajoutez l'unité Pet type à votre application client EMS :
- Dans le Gestionnaire de projets | cliquez avec le bouton droit dans le projet | Ajouter nouveau > Unité.
- Renommez l'unité en PetType.
- Ajoutez le code de l'unité PetType de Création du type Pet à votre unité.
Création des méthodes de point de terminaison de ressource EMS Pets
Vous devez créer la requête aux méthodes de point de terminaison de ressource EMS Pets pour chaque bouton de votre application. Vous pouvez également lier visuellement les données de réponse (depuis le serveur EMS) à un composant dans votre application client EMS Pets.
- Créez une fonction private dans votre classe pour récupérer les données du serveur EMS.
- Pour Delphi :
// To Get all pets procedure TForm1.GetAllPets; begin BackendEndpointGetPets.Execute; ServerResponse.Text := BackendEndpointGetPets.Response.JSONText; end;
- Créez l'événement onClick de chaque composant TButton (double-clic dessus) déposé dans la fiche TForm.
- Ajoutez le code suivant à l'implémentation du gestionnaire d'événement :
- Pour Delphi :
// To Add a Pet procedure TForm1.ButtonAddPetClick(Sender: TObject); var LJSONObject: TJSONObject; LPet: TPet; begin LJSONObject := TJSONObject.Create; LPet.Create(EId.Text.ToInteger, EName.Text, EKind.Text); try TPetJSON.PetToJSON(LPet, LJSONObject); BackendEndpointPostPets.ClearBody; BackendEndpointPostPets.AddBody(LJSONObject); BackendEndpointPostPets.Execute; GetAllPets; finally LJSONObject.Free; end; end; // To Get all pets procedure TForm1.ButtonGetPetsClick(Sender: TObject); begin GetAllPets end; // To Get a Pet procedure TForm1.ButtonGetPetClick(Sender: TObject); var LJSON: TJSONValue; APet: TPet; begin BackendEndpointGetPet.Params.Items[0].Value := EPetId.Text; BackendEndpointGetPet.Execute; LJSON := BackendEndpointGetPet.Response.JSONValue; if LJSON <> nil then begin APet := TPetJSON.JSONToPet(LJSON); ServerResponse.Text := BackendEndpointGetPet.Response.JSONText; EName.Text := APet.Name; EKind.Text := APet.Kind; EId.Text := APet.Id.ToString; end; end; procedure TForm1.ButtonDeleteClick(Sender: TObject); begin BackendEndpointDeletePet.Params.Items[0].Value := EPetId.Text; BackendEndpointDeletePet.Execute; GetAllPets; end; // To update a pet procedure TForm1.ButtonUpdateClick(Sender: TObject); var LJSONObject: TJSONObject; LPet: TPet; begin LJSONObject := TJSONObject.Create; LPet.Create(0, EName.Text, EKind.Text); try BackendEndpointPutPet.Params.Items[0].Value := EId.Text; TPetJSON.PetToJSON(LPet, LJSONObject); BackendEndpointPutPet.ClearBody; BackendEndpointPutPet.AddBody(LJSONObject); BackendEndpointPutPet.Execute; GetAllPets; finally LJSONObject.Free; end; end;
- Déclaration de classe de votre client EMS Pets :
- Pour Delphi :
TForm1 = class(TForm) EMSProvider1: TEMSProvider; BackendEndpointGetPets: TBackendEndpoint; BackendEndpointGetPet: TBackendEndpoint; BackendEndpointPostPets: TBackendEndpoint; BackendEndpointPutPet: TBackendEndpoint; BackendEndpointDeletePet: TBackendEndpoint; ButtonAddPet: TButton; ButtonGetPets: TButton; ButtonUpdate: TButton; ButtonGetPet: TButton; ButtonDelete: TButton; EId: TEdit; EName: TEdit; EKind: TEdit; LId: TLabel; LName: TLabel; LKind: TLabel; ServerResponse: TMemo; EPetId: TEdit; LPetId: TLabel; procedure ButtonAddPetClick(Sender: TObject); procedure ButtonGetPetsClick(Sender: TObject); procedure ButtonUpdateClick(Sender: TObject); procedure ButtonGetPetClick(Sender: TObject); procedure ButtonDeleteClick(Sender: TObject); private procedure GetAllPets; public { Public declarations } end;
- Construisez et exécutez votre application. Appuyez sur F9 ou sélectionnez Exécuter >Exécuter.
- Remarque : Le serveur EMS doit être en cours d'exécution et la ressource EMS Pets y a été préalablement chargée.