Delphi RestDebugger - John COLIBRI. |
- résumé : utilisation du RestDebugger Delphi pour mettre au point des Services Web Rest et copier sur une tForm les composants Clients Rest permettant de dialoguer avec ce web service. Utilisation de
tTestResponseDataSetAdapter pour afficher la réponse JSON dans un tDataSet
- mots clé : Web Services Rest, Rest Debugger, OAUTH2, tTestResponseDataSetAdapter
- logiciel utilisé : Windows 10 pro 64 bit, Delphi Xe8
- champ d'application : Delphi 1 à 7, 2006 à 2010, Xe_nnn, Seattle, Tokyo, Berlin, Delphi 10.3
- niveau : développeur Delphi
- plan :
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 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" | |
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 Dans l'onglet "Body", le RestDebugger affiche aussi le contenu de la réponse:
Et, dans l'onglet "Tabular Data", les données Json affichées en deux dimensions |
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 |
| 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 | |
sur Form1, "click droit | view as text" affichera le .DFM avec les composants correctement initialisés |
| 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
|
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(Sender: TObject);
Begin RESTRequest1.Execute;
Memo1.Lines.Add(RestResponse1.Content);
End; // send_rest_request_Click | |
Nous pouvons aussi formatter cette réponse en utilisant un tDataSet:
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
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
- et le paramètre (l'auteur recherché) est
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
| | cliquez "Apply" et "Send Request" |
| les chansons sont affichées |
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
- 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"
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é puis une demande d'acceptation
| 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
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) 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
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" :
- 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. |