Création d'un client EMS Pets

De Appmethod Topics
Aller à : navigation, rechercher

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.

Création d'une application client EMS

  1. Créez une nouvelle application multi-périphérique :
    • Pour Object Pascal : Fichier > Nouveau > Application multi-périphérique - Object Pascal
  2. Dans la palette d'outils, recherchez un composant TEMSProvider et déposez-le sur la fiche TForm.
  3. 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
    EMSServerConnection.png
  4. 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.

  1. Dans votre application client EMS, déposez un composant TBackendEndpoint sur la fiche TForm.
  2. Dans l'inspecteur d'objets, renommez le composant TBackendEndpoint en BackendEndpointGetPets.
  3. 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.
    TBackendEndpointGetPets1.png
  4. 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
  5. Dans la fenêtre du serveur EMS, le volet journal affiche la requête de version.
    UsersGetEMSServerLogGetPets.png
    Remarque : Vous devez ajouter autant de TBackendEndpoint que de méthodes de point de terminaison de ressource EMS définies dans Ressource EMS Pets.
    Répétez les étapes précédentes (1 à 4) pour la configuration des composants TBackendEndpoint, comme illustré dans le tableau suivant :
    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


    EMSClientBackendEndpoints.png
  6. Déposez un composant TMemo sur la fiche TForm.
  7. Renommez le TMemo en ServerResponse.
  8. Dans l'inspecteur d'objets, définissez pour le composant TMemo la propriété ReadOnly sur True.
  9. Pour ce tutoriel, déposez cinq composants TButton sur votre fiche TForm.
  10. 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

  11. Déposez quatre composants TEdit sur votre fiche. Renommez-les en EId, EName, EKind et EPetId.
  12. 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 et Pet Id.
EMSPetsClientDesignTab.png

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 :

  1. Dans le Gestionnaire de projets | cliquez avec le bouton droit dans le projet | Ajouter nouveau > Unité.
  2. Renommez l'unité en PetType.
  3. 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.

  1. Créez une fonction private dans votre classe pour récupérer les données du serveur EMS.
    • Pour Object Pascal :
    // To Get all pets
    procedure TForm1.GetAllPets;
    begin
      BackendEndpointGetPets.Execute;
      ServerResponse.Text := BackendEndpointGetPets.Response.JSONText;
    end;
    
  2. Créez l'événement onClick de chaque composant TButton (double-clic dessus) déposé dans la fiche TForm.
  3. Ajoutez le code suivant à l'implémentation du gestionnaire d'événement :
    • Pour Object Pascal :
    // 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;
    
  4. Déclaration de classe de votre client EMS Pets :
    • Pour Object Pascal :
    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;
    
  5. Construisez et exécutez votre application. Appuyez sur F9 ou sélectionnez Exécuter >Exécuter.
    EMSPetsClientRunning.png
Remarque : Le serveur EMS doit être en cours d'exécution et la ressource EMS Pets y a été préalablement chargée.

Voir aussi