Lors de la très intéressante édition 2017 de la Conférence Filemaker, une partie de la première journée était consacrée aux nouvelles fonctionnalités de cURL et JSON intégrées dans la version 16 de Filemaker. Occasion parfaite pour revenir sur ces nouvelles fonctions qui font passer Filemaker dans une nouvelle ère.
Qu’est-ce que cURL ?
cURL est un ensemble de commandes permettant d’interagir entre deux entités d’un réseau. Pour faire simple, c’est une porte d’entrée et un langage commun pour « communiquer » entre deux outils qui sont au départ différent en passant par des méthodes REST qui sont :
- GET : pour récupérer et lister les éléments
- PUT : pour remplacer une informations
- POST : pour ajouter une donnée
- DELETE : pour supprimer un élément
Qu’est-ce que JSON ?
JSON est un format permettant de représenter des données (tout comme xml).
Nous allons maintenant voir ci-dessous par un exemple simple et concret d’interaction avec WordPress pour récupérer les tags des articles ainsi que poster un article.
Comment configurer WordPress ?
Pour WordPress, il vous faut plusieurs choses :
- Depuis la version 4.7, l’API REST est intégrée à WordPress, donc vous n’avez rien a installer pour la faire fonctionnner. Vous devrez pouvoir y accéder en ajoutant /wp-json/wp/v2 à la fin de votre URL comme ceci : https://www.pro-soft.fr/wordpress-filemaker/pro-soft.fr/wp-json/wp/v2
- Pour l’authentification, qui sera nécessaire pour mettre à jour les articles par exemple, il vous faudra créer un utilisateur avec des droits limités et ensuite installer le plugin JSON Basic Authentication disponible à cette adresse.
- Plongez-vous dans la documentation de l’API WordPress qui vous donnera réponse à toutes vos interrogations !
Et maintenant à l’action en lançant la commande pour récupérer les mots-clés (appelés tags) du site.
Utiliser JSON pour récupérer les mots-clés d’un site WordPress
Dans votre base Filemaker, vous pouvez créer un table avec un champ nombre id et un champ texte nom et lancer le script suivant :
Définir variable [ $url ; Valeur: "https://www.pro-soft.fr/wordpress-filemaker/pro-soft.fr/wp-json/wp/v2/tags/" ] // URL de l'API WordPress permettant de récupérer les tags Insérer depuis URL [ Sélectionner ; Avec boîte de dialogue: Non ; $JSON ; $url ] Définir variable [ $nombre ; Valeur: DecompteValeurs ( JSONListKeys ( $JSON; "") ) ] //on récupère le nombre de tags Si [ $nombre > 0 ] Définir variable [ $items ; Valeur: JSONListKeys ( $JSON; "") ] // on liste les éléments Définir variable [ $i ; Valeur: 1 ] Boucle Définir variable [ $item ; Valeur: JSONGetElement( $JSON ; ObtenirValeur ( $items ; $i ) ) ] // on récupère le 1er élément Définir variable [ $id ; Valeur: JSONGetElement( $item ; "id" ) ] Définir variable [ $name ; Valeur: JSONGetElement( $item ; "name" ) ] Activer modèle [ “tag” (web_tag) ; Animation: Aucune ] Nouvel enreg./requête //On ajoute les tags un par un dans la base de données Définir rubrique [ web_tag::id ; $id ] Définir rubrique [ web_tag::nom ; $name ] Définir variable [ $i ; Valeur: $i + 1 ] Fin de boucle si [ $i > $nombre ] Fin de boucle Fin de si Activer modèle [ modèle d'origine ; Animation: Aucune ]
Attention ce script ne récupérera que les 10 premiers tags du site web (voir la documentation).
Vous pouvez télécharger le fichier exemple à cette adresse.
Lancer une commande cURL depuis Filemaker pour poster un article sur votre site wordpress
Cette fois nous aurons besoin d’ajouter des éléments dans la requète cURL :
Définir variable [ $data ; Valeur: JSONFormatElements( JSONSetElement( "{}" ; ["title" ; Mon nouveau titre d'article ; JSONString] ) ) ] Insérer depuis URL [ Sélectionner ; Avec boîte de dialogue: Non ; $result ; "http://www.wikipark.fr/wp-json/wp/v2/posts/" & id_du_post ; Options cURL: "-X POST " & "-u utilisateur:mot_de_passe " & "-H \"Content-Type: application/json;\" " & "-d @$data" ]
Voilà les différents paramètres de la requète :
- « -X POST « : On envoie les données
- « -u utilisateur:mot_de_passe « : On utilise le login et mot de passe de l’utilisateur défini précédemment
- « -H \ »Content-Type: application/json;\ » « : On envoie l’entête JSON pour permettre de communiquer avec WordPress
- « -d @$data » : On envoie les données définis dans la variable précédente au format JSON.
Bonjour, alors que j’essais de comprendre le fonctionnement de votre demo celle ci affiche deja des erreurs… Nom de tables ? etc…
Bonjour, je viens de tester le fichier de démo (https://www.pro-soft.fr/wp-content/uploads/wordpress.fmp12) et il fonctionne très bien. Quelle version de FileMaker avez-vous ? Est-ce bien la 16 ?