Rapport de recherche sur l'état de la recherche sur site dans l'enseignement supérieur avec The Chronicle of Higher Education | Télécharger le rapport
La solution SearchStax Site Search offre aux spécialistes du marketing l'agilité dont ils ont besoin pour optimiser les résultats du site Web.
Présentation du produitSearchStax Managed Search décharge la gestion de Solr, offrant aux équipes informatiques une agilité opérationnelle accrue.
Présentation du produit25 avril 2019
Bruce Clayton
|
SearchStax a récemment publié une API REST pour la gestion des configurations Zookeeper Solr Cloud. Un ensemble de cinq méthodes API permet aux utilisateurs autorisés de créer, lister, lire, télécharger et supprimer des configurations Solr Cloud à distance. Ceci fait partie d'un API plus grande qui permet aux clients SearchStax de créer et de configurer des déploiements Solr Cloud de manière procédurale s'ils le souhaitent.
Dans le cadre de mon rôle au sein du support SearchStax, on m'a demandé de développer des exemples de ces méthodes. Vous pouvez tester une API REST avec n'importe quel outil permettant d'envoyer des requêtes HTTP sur le web. Pour mes tests, j'utilise boucle à partir d'un script shell Bash sur une plate-forme Linux.
L'API SearchStax est simple à utiliser dans cet environnement, hormis les difficultés habituelles liées à l'analyse des objets JSON renvoyés et à l'extraction des valeurs souhaitées. Par exemple, la commande Bash permettant de récupérer une liste de configurations Solr depuis un ensemble Zookeeper est très simple :
RÉSULTATS=$(curl -s -X GET -H "Autorisation : clé API $APIKEY" \ https://app.searchstax.com/api/rest/v2/account/$ACCOUNT/deployment/$uid/zookeeper-config/)
La clé $APIKEY est une innovation intéressante. Il s'agit d'un code de sécurité qui donne accès à la configuration Solr d'un déploiement à un utilisateur. Il n'expire pas, mais est révocable. Cela permet à l'administrateur du déploiement de déléguer la configuration Solr à un utilisateur externe sans lui accorder d'accès général.
Toutes les méthodes d'API fonctionnaient sous Bash lorsqu'un client m'a demandé des exemples d'API dans Windows PowerShell. « Bien sûr », me suis-je dit. « C'est vraiment difficile ! »
La syntaxe de PowerShell est étonnamment similaire à celle de Bash, sauf dans certains cas, ce qui est le cas la plupart du temps. Pour paraphraser l'auteur Douglas Adams dans Le Guide du voyageur galactique« PowerShell est presque, mais pas tout à fait, exactement contrairement à Bash. » Les tâches et les objectifs du script sont cependant les mêmes dans les deux environnements, je me suis donc installé pour apprendre de nouveaux idiomes, de nouveaux objets et de nouvelles méthodes.
L'apprentissage a pris environ une journée. Mon script pour récupérer les configurations Solr depuis Zookeeper s'est transformé en trois lignes de script PowerShell :
$headers = Nouvel objet « System.Collections.Generic.Dictionary[[String],[String]] » $headers.Add("Authorization", "APIkey $APIKEY") $RESULTS = Invoke-RestMethod -Method Get -Headers $headers / ‑uri « https://app.searchstax.com/api/rest/v2/account/$ACCOUNT/deployment/$uid/zookeeper-config/ »
Le code était fondamentalement le même, tout en étant complètement différent, mais c'est ça le code. J'ai rapidement travaillé sur les autres exemples, puis j'ai rencontré un problème.
L'une des méthodes de l'API SearchStax utilise données de formulaire/multipart pour imiter le corps d'une requête POST à partir d'un formulaire multi-champs. C'est le gardien de zoo-config-créer La méthode utilise un champ de formulaire pour télécharger un répertoire de configuration au format ZIP. Elle convertit le fichier ZIP en flux binaire et l'envoie aux serveurs SearchStax, puis à Zookeeper. En Bash, le code était parfaitement simple :
DÉTAILS=$(curl -s -H -X POST "Autorisation : clé API $APIKEY" \ -F "name=test_config" -F "files=@conf.zip" https://app.searchstax.com/api/rest/v2/account/$ACCOUNT/deployment/$uid/zookeeper-config/)
Les paramètres –F correspondent aux champs du formulaire multipartite. Cependant, lorsque j'ai essayé cette méthode dans PowerShell, je me suis heurté à un obstacle.
Le problème, comme je l'ai rapidement découvert, est que PowerShell est connu pour ne pas prendre en charge les données multipart/formulaires ! De nombreux blogs, accumulés au fil des ans, déplorent cette faille dans PowerShell. D'autres expliquent comment assembler manuellement les données de formulaire à l'aide d'objets PowerShell, mais la plupart des gens n'y parviennent pas. Je n'y suis certainement pas parvenu.
J'ai passé des heures à parcourir les articles de blog avant de découvrir PowerShell Core, une version open source multiplateforme de PowerShell basée sur .NET Core. La première version de PowerShell Core, la version 6.0, est sortie en janvier 2018. La version 6.1 est sortie en mars de la même année. Elle incluait une prise en charge limitée des données multipart/form-data fournies par Marc Kraus. Voir l'exemple 4 ici.
J'ai installé PowerShell Core 6.2 et testé la nouvelle fonctionnalité. Après avoir configuré le même en-tête pour la clé API, le reste du code était simple :
$form = @{ nom = 'test_config' fichiers = Get-Item -Path 'conf.zip' } $RESULTS = Invoke-RestMethod -Method Post -Headers $headers -Form $form \ ‑uri "https://app.searchstax.com/api/rest/v2/account/$ACCOUNT/deployment/$uid/zookeeper-config/"
J'ai exécuté le script. Le fichier ZIP a été transmis, décompressé et installé comme prévu.
Les exemples PowerShell sont maintenant terminés et je peux retourner à la lecture Le Guide du voyageur galactique. Où est ma serviette ?
The Stack est livré tous les deux mois avec des tendances du secteur, des informations, des produits et plus encore