menu
  Home  ==>  articles  ==>  services_web_  ==>  delphi_restdebugger   

Delphi RestDebugger - John COLIBRI.


1 - Client Services Web REST Delphi

Cet article présente le RestDebugger de Delphi. Cet outil fourni avec Delphi est un "client REST" universel, permettant
  • de dialoguer avec des serveurs REST tels que Google Drive, Twitter, Dropbox etc
  • d'afficher la réponse fournie par le serveur
  • de copier dans le presse papier les composants Client Rest Delphi à poser sur une tForme (ou un tDataModule) Delphi



2 - Le RestDebugger Delphi

2.1 - Interrogation de Songsterr

Songsterr est un service web REST permettant d'afficher les partitions de guitare de chansons célèbre:

  "The Songsterr API allows you to search, get and present songs and guitar tabs from the Songsterr database. You can search by artist or song"

Visualisons, par exemple, les partitions d'Arlo Guthrie. Pour cela:
   lancez votre browser favori
   tapez l'URL

 
  https://www.songsterr.com/a/ra/songs.json?pattern=guthrie

   la liste des chansons d'Arlo Guthrie est affichée

delphi_restdebugger

soit 4 chansons, dont le fameux "Alice's Restaurant"



2.2 - Lancement d'une requête par le RestDebugger

   lancez Delphi
   sélectionnez "Tools | RestDebugger"

start_the_restdebugger

   le RestDebugger est lancé

   dans l'Edit "Url", tapez l'URL et cliquez "Send Request"

   la requête est lancée, et vous pouvez voir l'en-tête de la réponse dans le premier onglet en bas à gauche

restdebugger_get_request

Dans l'onglet "Body", le RestDebugger affiche aussi le contenu de la réponse:

restdebugger_response_body

Et, dans l'onglet "Tabular Data", les données Json affichées en deux dimensions

restdebugger_json_response



2.3 - Copie des composants dans Delphi

Maintenant que la requête a réussi, nous pouvons copier dans le presse-papier les composants Delphi qui permettront de lancer, depuis Delphi, la même requête:
   dans le RestDebugger, cliquez "Copy Components"

   le RestDebugger confirme la copie dans le presse papier

restdebugger_copy_rest_compoents

   cliquez "Ok"

   lancez Delphi. Cliquez "File | New | Vcl Application".
   Delphi crée une application
   sur la tForm, copiez ces composants "click droit | Edit | Paste"
le presse papier

   les composants sont copiés en haut à droite de la forme. En les réarrangeant un peu

delphi_rest_client

   sur Form1, "click droit | view as text" affichera le .DFM avec les composants correctement initialisés

delphi_rest_client_components

   revenez à la tForm normale par "click droit | view as Form"

   sur la Form1, sélectionnez RestRequest1 puis "click droit | Execute"

   Songsterr indique que la requête Rest a réussi

songster_client_request_response



Pour voir le contenu de la requête, il faut passer par le code:
   posez un tMemo sur la tForme
   posez un tButton sur Form1, et dans son clic, lancez la requête et affichez la réponse

Procedure TForm1.send_rest_request_Click(SenderTObject);
  Begin
    RESTRequest1.Execute;
    Memo1.Lines.Add(RestResponse1.Content);
  End// send_rest_request_Click



Nous pouvons aussi formatter cette réponse en utilisant un tDataSet:
   posez sur la tForm
  • un tFdMemTable
  • un tDataSource et initialisez DataSet à FdMemTable1
  • une tDbGrid et initialize DataSource à DataSource1
   posez un tTestResponseDataSetAdapter, initialisez
  • DataSet à FdMemTable1
  • Response à RestResponse1
   executez et cliquez "send_rest_request_"
   la réponse Json est formatée dans la grille:

trestresponsedatasetadapter



Notez que
  • si nous avions placé les composants d'affichage sur la tForm, le fait de cliquer "RestRequest1 | Execute" aurait aussi peuplé la tDbGrid avec la réponse

    display_json_dataset



2.4 - Paramètres de la requête REST

Notre URL comportait les paramètres de l'auteur recherché.

 
https://www.songsterr.com/a/ra/songs.json?pattern=guthrie

En fait

  • l'URL de base est

     
    https://www.songsterr.com/a/ra

  • le format demandé est

     
    songs.json

  • et le paramètre (l'auteur recherché) est

     
    ?pattern=guthrie



Nous aurions pu utiliser l'onglet "Parameters" pour rentrer le(s) paramètre(s) de notre requête REST:
   cliquez "New Request"

   dans l'onglet "Request", et dans l'URL, tapez

https://www.songsterr.com/a/ra

   dans l'onglet "Parameters", dans "Resource", tapez

songs.json

   cliquez "Add" et ajoutez pattern et Guthrie

rest_request_parameters

   cliquez "Apply" et "Send Request"

   les chansons sont affichées

rest_request_with_parameters



Notez que dans mon cas (XE8), il a fallu fermer et relancer RestDebugger, le bouton "New Request" ne purgeant pas complètement la précédente requête, semble-t-il.



2.5 - Autres utilisations de RestDebugger

Pour les requêtes GET, mentionnons aussi que nous pouvons afficher une partie d'une réponse JSON dans la table. Prenons le cas d'une facture. Elle a en général la structure
  • adresse
  • date
  • numéro
  • les lignes
    • ligne 1
    • ligne 2
    • ligne 3
  • total
Dans ce cas, nous pouvons placer dans "JSON Root Element" la liste des lignes



Nous avons utilisé la méthode (le verbe HTTP) la plus courante, GET.

Nous pouvons aussi utiliser PUT, et dans ce cas, nous plaçons dans "Custom Body" le contenu de la requête PUT.



Nous pouvons au utiliser des requêtes employant des protocoles de sécurité, comme OAUTH1 ou OAUTH2. Prenons le cas d'un service destiné à placer des fichiers dans Dropbox. Il faut auparavant

  • créer un compte Dropbox
  • créer une "Dropbox App". Vous devenez alors l'heureux propriétaire d'un "ClientId" qui est utilisé par OAUTH2, "lyto17f3j3rr1UV" dans mon cas.
Puis
   lancez RestDebugger

   sélectionnez l'onglet "Authentication"
   cliquez "Oaut-Assistant"

   remplissez les champs de l'assistant pour récupérer le "token Dropbox"

rest_oauth2_assistant

puis cliquez "Step 1 Authorize"

   Dopbox se lance dans le dialogue avec le propriétaire de la boite pour retourner à l'application cliente. Un avertissement est présenté

dropbox_warning

puis une demande d'acceptation

dropbox_owner_accepts

Au bout du compte, Dropbox fournit le token qui est alors utilisé pour les autres requêtes de l'application Dropbox




3 - Remarques sur le Debugger REST

3.1 - Le RestDebugger

Le RestDebugger a été écrit par Jim McKeeth. Il est fourni en source avec les dernières versions de Delphi. Dans le cas de Xe8, je l'ai trouvé dans

 
C:\Program Files (x86)\Embarcadero\Studio\16.0\source\data\rest\restdebugger\ 

La fourniture des sources vous permet de modifier le debugger en fonction de vos besoins.

J'ai même trouvé une version modifiée sur GitHub avec une option "do not encode"

Si vous n'avez pas le RestDebugger, vous pouvez le télécharger en allant sur le site Embarcadero

Comme ma version Xe8 affichait quelques erreurs, j'ai essayé de le recompiler. Il manquait uRESTDebuggerResStrs.pas que j'ai récupéré dans une autre version de Delphi.



3.2 - Api Songsterr

Pour trouver la documentation sur les API Sonsterr, j'ai utilisé le répertoire des services Rest
  • En tapant "Songsterr", j'ai obtenu:

    rest_api_finder

    et en cliquant "songsterr"

    songsterr_api_link

    avec, sous "API Portal / Home Page"

     
    http://www.songsterr.com/a/wa/api

  • ce lien fournit une page d'explication:

    songsterr_api_documentation

  • donc pour avoir la partition de "Alice's Restaurant", la request Service Web REST est (cf la liste des morceaux de Guthrie ci-dessus)

     
    http://www.songsterr.com/a/wa/song?id=25814

  • en lançant cette requête j'obtiens

    alices_restaurant_guitar_tab



Bon. La partition c'est pas mal. Mais, allez, si vous voulez réellement vous faire plaisir, et que vous avez 20 minutes à couler, cliquez donc Alice's Restaurant

"A litter bum" ... Nous étions en 68, peut être de droite mais pas réellement fanas mili. Mais qu'est-ce que nous avons pu rigoler avec "Alice's Restaurant" !



Pour la petite histoire, j'ai tout d'abord essayé les musiciens chers à mon coeur, comme Lester Young, Paul Desmond, Don Bias ou Gerry Mulligan. Aucun résultat: Songsterr est concerné par les partitions de GUITARE. Pas de saxo. Si quelqu'un connaît un service web rest équivalent pour le saxo, je suis preneur



3.3 - Packages de clients Rest

Il existe de nombreux packages de clients de Service Web Rest usuels (Google Calendar, Mail,, Contacts etc, Microsoft One Drive, Live Calendars, Outlook Mail, DropBox, FaceBook, Twitter, Linkedin, PayPal etc).

Voici, par exemple la liste des composants TMS (150 Euros avec les sources)

clients_rest_tms

La liste est tellement longue que je n'ai pu la copier en entier. Cela fait tellement plaisir, une fois, de voir une société s'investir avec tellement d'enthousiasme pour Delphi




4 - Références et Liens

Concernant le RestDebugger

Pour les services Rest
  • pour trouver la documentation sur un service Rest "connu", utilisez

    Répertoire des services Rest

  • Package de clients Rest TMS

  • nous proposons aussi
    • des formations Services REST Delphi
    • des développements de mise en place de service Rest et de migration vers des architectures microservices



5 - Télécharger le code source Delphi

Vous pouvez télécharger:
  • delphi_rest_service_sonsgterr.zip : le client Rest Delphi permettant de télécharger des partitions musicales (111 K) (le .PAS est rikiki (2K) mais les resources et le .DPROJ prennent 100K !)
Ce .ZIP qui comprend:
  • le .DPR, la forme principale, les formes annexes eventuelles
  • les fichiers de paramètres (le schéma et le batch de création)
  • dans chaque .ZIP, toutes les librairies nécessaires à chaque projet (chaque .ZIP est autonome)
Ces .ZIP, pour les projets en Delphi 6, contiennent des chemins RELATIFS. Par conséquent:
  • créez un répertoire n'importe où sur votre machine
  • placez le .ZIP dans ce répertoire
  • dézippez et les sous-répertoires nécessaires seront créés
  • compilez et exécutez
Ces .ZIP ne modifient pas votre PC (pas de changement de la Base de Registre, de DLL ou autre). Pour supprimer le projet, effacez le répertoire.

La notation utilisée est la notation alsacienne qui consiste à préfixer les identificateurs par la zone de compilation: K_onstant, T_ype, G_lobal, L_ocal, P_arametre, F_unction, C_lasse. Elle est présentée plus en détail dans l'article La Notation Alsacienne



Comme d'habitude:

  • nous vous remercions de nous signaler toute erreur, inexactitude ou problème de téléchargement en envoyant un e-mail à jcolibri@jcolibri.com. Les corrections qui en résulteront pourront aider les prochains lecteurs
  • tous vos commentaires, remarques, questions, critiques, suggestion d'article, ou mentions d'autres sources sur le même sujet seront de même les bienvenus à jcolibri@jcolibri.com.
  • plus simplement, vous pouvez taper (anonymement ou en fournissant votre e-mail pour une réponse) vos commentaires ci-dessus et nous les envoyer en cliquant "envoyer" :
    Nom :
    E-mail :
    Commentaires * :
     

  • et si vous avez apprécié cet article, faites connaître notre site, ajoutez un lien dans vos listes de liens ou citez-nous dans vos blogs ou réponses sur les messageries. C'est très simple: plus nous aurons de visiteurs et de références Google, plus nous écrirons d'articles.



6 - L'auteur

John COLIBRI est passionné par le développement Delphi et les applications de Bases de Données. Il a écrit de nombreux livres et articles, et partage son temps entre le développement de projets (nouveaux projets, maintenance, audit, migration BDE, migration Xe_n, refactoring) pour ses clients, le conseil (composants, architecture, test) et la formation. Son site contient des articles avec code source, ainsi que le programme et le calendrier des stages de formation Delphi, base de données, programmation objet, Services Web, Tcp/Ip et UML qu'il anime personellement tous les mois, à Paris, en province ou sur site client.
Created: jan-04. Last updated: mar-2020 - 250 articles, 620 .ZIP sources, 3303 figures
Contact : John COLIBRI - Tel: 01.42.83.69.36 / 06.87.88.23.91 - email:jcolibri@jcolibri.com
Copyright © J.Colibri   http://www.jcolibri.com - 2001 - 2020
Retour:  Home  Articles  Formations  Développement Delphi  Livres  Pascalissime  Liens  Download
l'Institut Pascal

John COLIBRI

+ Home
  + articles_avec_sources
    + bases_de_donnees
    + web_internet_sockets
    + services_web_
      – delphi_restdebugger
    + prog_objet_composants
    + office_com_automation
    + colibri_utilities
    + uml_design_patterns
    + graphique
    + delphi
    + outils
    + firemonkey
    + vcl_rtl
    + colibri_helpers
    + colibri_skelettons
    + admin
  + formations
  + developpement_delphi
  + présentations
  + pascalissime
  + livres
  + entre_nous
  – télécharger

contacts
plan_du_site
– chercher :

RSS feed  
Blog