Suite

Comment naviguer dans les points de terminaison REST et récupérer les informations de champ par programme

Comment naviguer dans les points de terminaison REST et récupérer les informations de champ par programme


J'ajoute un service de carte dynamique à une carte API JavaScript d'ArcGIS Server et je dois mettre la main sur chaque couche de composant et ses champs pour pouvoir exécuter une requête.

Consultez l'exemple de répertoire de services ArcGIS Server à l'adresse http://sampleserver3.arcgisonline.com/ArcGIS/rest/services/HomelandSecurity/operations/MapServer

Si vous ouvrez cette URL dans un navigateur, vous pouvez voir la liste des couches (0,1,2) et chaque couche des champs.

Comment puis-je récupérer la liste des champs par programmation, dans une fonction JavaScript ? L'extrait de code ci-dessous montre comment récupérer les points de terminaison de la couche, mais je ne vois pas comment accéder aux champs.

(Une option consiste à ajouter les couches en tant que couches d'entités, mais je préférerais éviter cela si possible).

var url = "http://sampleserver3.arcgisonline.com/ArcGIS/rest/services/HomelandSecurity/operations/MapServer/" ; var dynLayer = new esri.layers.ArcGISDynamicMapServiceLayer(url); map.addLayer(dynLayer); dojo.connect(dynLayer, "onLoad", function() { var infos = dynLayer.layerInfos; for (var i = 0; i <= infos.length - 1; i++) { var layerId = infos[i].id; var restEndPoint = url + layerId ; //restEndPoint est l'URL de la couche - comment puis-je récupérer ses champs ? } });

Merci, Steve (posté sur le forum ArcGIS Server)


Utilisez esri.request() pour atteindre le point de terminaison REST de chaque couche afin d'obtenir des informations sur les champs. Voici un exemple simple :

      les noms de champs et les alias s'afficheront ici. 

Ce code utilise la v2.0 de l'API mais la même chose fonctionnera en 2.3 ou 2.4. J'ai initialement posté sur le forum Esri JS API.

Éditer: Mise à jour pour gérer toutes les couches d'un service. Le code utilise également désormais la version 2.4 de l'API.


J'ai peut-être le mauvais bout du bâton ici, mais ne vous contentez-vous pas d'effectuer une requête sur la couche en question et de récupérer les résultats sous forme d'ensemble de résultats ? Si vous le demandez en json, vous pouvez analyser les résultats ?

Alors pour ça :

http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Specialty/ESRI_StateCityHighway_USA/MapServer/1/query?where=STATE_NAME%3D%27Florida%27&f=json

Le retour est :

{"displayFieldName":"STATE_NAME","fieldAliases":{"STATE_NAME":"STATE_NAME"},"geometryType":"esriGeometryPolygon","spatialReference":{"wkid":4326},"fields":[{" name":"STATE_NAME","type":"esriFieldTypeString","alias":"STATE_NAME","length":25}],"features":[{"attributes":{"STATE_NAME":"Floride"} ,"géométrie":{"anneaux":[[[-80.785662408630856,28.785194039580265],… [-80.5878197219821,24.956376399079556],[-80.2494536778773134,25.354937642313288]]]}}]}

(J'ai supprimé la majeure partie de la géométrie pour faciliter la lecture)


Suivez cette tâche pour créer un point de terminaison REST personnalisé :

Sélectionnez le Dent icône, puis sélectionnez Configuration générale.

Faites défiler jusqu'au ScriptRunner dans la navigation de gauche, puis sélectionnez Points de terminaison REST.

Sélectionner Ajouter un nouvel élément, et sélectionnez le Point de terminaison personnalisé

Utilisez l'exemple de point de terminaison REST suivant pour examiner les différentes parties du script :

1 Cette ligne rend les méthodes de votre script reconnaissables en tant que points de terminaison, ce qui est obligatoire.
2 Le nom du point de terminaison REST, qui fait partie de l'URL. Dans cet exemple, il s'agit de doSomething .
3 Cette ligne configure le point de terminaison, que HTTP verbe gérer et quels groupes autoriser.
4 Cette ligne contient les paramètres fournis au corps de votre méthode.
5 Le corps de votre méthode, où vous retournerez un objet javax.ws.rs.core.Response.

Vous pouvez ajouter ce point de terminaison REST à la liste des points de terminaison configurés en tant que script en ligne ou en le copiant dans un fichier et en ajoutant ce fichier en tant que fichier de script. Pour tester ce point de terminaison, saisissez ce texte dans votre navigateur :

Vous pouvez également saisir ceci dans l'utilitaire de ligne de commande :

Encore une fois, notez le nom doSomething dans chaque commande.

admin:admin correspond à un nom d'utilisateur et un mot de passe.

Si vous utilisez un fichier, vous pouvez modifier la réponse. Vous devrez peut-être sélectionner le Analyse sur la page Points de terminaison REST avant que les appels au point de terminaison ne renvoient la nouvelle réponse. Voir la section sur l'analyse de la racine du script ci-dessous.

Configuration

Le format général d'une méthode définissant un point de terminaison REST est :

Pour la configuration, seules les options suivantes sont prises en charge :

Un ou plusieurs groupes. Si l'utilisateur demandeur appartient à l'un des groupes, la demande est autorisée.

L'un ou les deux peuvent être omis. Si vous omettez l'attribut groups, le point de terminaison sera disponible pour les utilisateurs non authentifiés.

Utilisez ces paramètres pour la fermeture :

Cela correspond aux paramètres d'URL.

C'est le corps de la requête pour httpMethod (Post, Put, etc.).

L'objet de demande, vous pouvez l'utiliser pour obtenir l'utilisateur demandeur par exemple.

Vous pouvez utiliser l'un de ces formulaires pour votre fermeture :

Le contenu de la fermeture dépend de ce à quoi vous avez besoin d'accéder.

URL de demande d'accès

Parfois, vous devrez peut-être utiliser le chemin d'URL après le nom de votre méthode, par exemple dans l'appel suivant, vous souhaitez récupérer le /foo/bar :

Pour obtenir cela, utilisez la forme à 3 paramètres de la définition de fermeture et appelez la méthode getAdditionalPath à partir de la classe de base :

Dans les versions précédentes, une variable extraPath était injectée dans les scripts, mais ce n'est pas thread-safe - utilisez plutôt la méthode ci-dessus.

Analyse de la racine du script

En plus d'ajouter manuellement des scripts ou des fichiers via l'interface utilisateur, ScriptRunner analysera également vos racines de script à la recherche de scripts contenant des points de terminaison REST et les enregistrera automatiquement. Pour activer cela, vous devez définir la propriété plugin.rest.scripts.package sur une liste de packages délimités par des virgules, par exemple

Lors de l'activation du plug-in, les scripts/classes de ce package seront analysés et enregistrés, à condition que les scripts contiennent la ligne :

Il numérisera également plug-ins de scripts. Pour activer l'analyse de l'intégralité de toutes vos racines de script, définissez la propriété sur une chaîne vide, c'est-à-dire :


Exemples

Créer un objet prioritaire

Cet exemple montre comment combler une lacune dans l'API REST officielle. Il n'y a aucun moyen de créer un nouvel objet prioritaire.

La plupart de ce code est impliqué dans la validation du JSON qui lui est transmis. La validation garantit que tous les champs requis pour un objet prioritaire sont présents. La méthode appropriée sur la classe de réponse envoie le bon code d'état. Le code d'état est 500 (erreur serveur) si la priorité existe déjà. Le code d'état est 201 (créé) si la priorité est créée.

Pour tester, vous pouvez utiliser le code suivant :

priority.json est un fichier texte qui contient :

Vous pouvez avoir plusieurs méthodes avec le même nom dans le même fichier, ce qui est utile pour faire des API CRUD REST simples.

La rétrogradation de ScriptRunner peut entraîner la rupture des points de terminaison REST en raison d'un changement de format JSON. Adaptavist ne recommande pas de déclassement.

Obtenir l'utilisateur faisant la demande

Utilisez com.atlassian.sal.api.user.UserManager pour obtenir l'utilisateur actuel à partir de la requête http.

Avoir des questions? Visitez la communauté Atlassian pour vous connecter, partager et apprendre avec d'autres utilisateurs et experts Atlassian, y compris le personnel d'Adaptavist.

Vous voulez en savoir plus ? Consultez les cours sur Adaptavist Learn, une plateforme en ligne pour intégrer et former de nouveaux utilisateurs aux solutions Atlassian.


Un lien pour lancer l'explorateur d'API REST peut ne pas être accessible via Prism Central - en particulier dans le cas d'AOS v5.5. L'explorateur peut être lancé en tapant explicitement le URL dans la barre d'adresse de votre navigateur comme suit :

Noter: L'explorateur d'API REST NTNX v3 dans AOS v5.5.0.x n'est accessible qu'à l'aide de Prism Central (PC) URL tapé dans la barre d'adresse du navigateur actif.

Une fois que l'explorateur d'API apparaît, assurez-vous de vous authentifier ou de vous connecter (comme indiqué ci-dessus) à l'aide des informations d'identification du PC. Cliquez sur Explorateur s'authentifier. L'explorateur doit actualiser et afficher les Cibles de l'API REST + les requêtes.


HOWTO : obtenir des points de terminaison Webroot à l'aide de l'API REST Unity et de PowerShell

Webroot a récemment publié une nouvelle API REST qui nous permet, en tant qu'administrateurs, d'extraire des données détaillées sur les points de terminaison par programmation. Cela signifie effectivement que toutes les informations qui nous sont présentées dans Webroot Global Site Manager peuvent désormais être extraites directement et intégrées dans d'autres processus. Je voulais vraiment un script capable de s'exécuter sur une tâche planifiée et de comparer tous les systèmes d'Active Directory avec ceux enregistrés dans Webroot, puis de signaler les systèmes AD sur lesquels Webroot n'est pas installé ou n'ont pas été vérifiés. depuis plus d'une semaine.

Cela a pris un peu de lecture et d'essais et d'erreurs, mais j'ai réussi à créer un script PowerShell qui peut se connecter à Webroot et extraire tous les détails de chaque point de terminaison pour un code clé donné dans un objet avec lequel vous pouvez ensuite faire ce que vous voulez. J'ai pensé que je vous éviterais la frustration de trouver comment faire cela. Bien entendu, ce code est présenté tel quel. Cela fonctionne pour moi, mais votre kilométrage peut varier.

1) Vous spécifiez le code clé sur lequel vous souhaitez générer un rapport et fournissez vos informations d'identification d'utilisateur final habituelles ainsi qu'un ID client et un mot de passe API spéciaux que vous pouvez créer dans le GSM
2) Le script demandera alors un jeton API REST qui est valide pendant 300 secondes
3) Il utilisera ensuite ce jeton pour demander le siteID du code clé spécifié
4) Il utilisera ensuite cet identifiant de site pour récupérer tous les points de terminaison et leurs détails pour chaque point de terminaison associé au code clé donné et afficher les résultats


La page d'administration de Solr n'est qu'un ensemble de fichiers HTML statiques qui utilisent l'API REST offerte par Solr en coulisses. Si vous regardez l'onglet Réseau dans les outils de développement de votre navigateur pendant que vous le parcourez, vous verrez tous les points de terminaison auxquels il parle.

Après avoir fait cela sur la page d'analyse, vous pouvez voir qu'il envoie des requêtes à trois points de terminaison, un pour récupérer le code HTML, puis deux nouvelles requêtes pour obtenir le schéma (pour la liste des champs) et une pour effectuer l'analyse proprement dite :


Les propriétés différées (comme la ressource Fichier pour élément de liste) ne sont pas récupérées par défaut (tout d'abord, pour des raisons de performances). Il existe deux options pour récupérer les propriétés différées :

    effectuer une requête distincte, par exemple pour la ressource de fichier : /_api/web/lists/getbytitle('<list name>')/items(<item id>)/File

utilisez l'option de requête $expand pour demander les propriétés projetées. L'exemple suivant montre comment demander un élément de liste avec la propriété File initialisée :

/_api/web/lists/getbytitle('[nom de la liste]')/items([identifiant de l'article])?$expand=Fichier


Une autre option serait d'utiliser Lists SharePoint Web Services qui expose la méthode Lists.GetVersionCollection pour renvoyer les informations de version pour le champ spécifié dans une liste SharePoint

Noter: Cela ne semble pas fonctionner en 2013. J'ai vérifié que cela fonctionnait dans SharePoint Online et cela mai travail en 2016+ mais je n'ai pas vérifié ce dernier.

La situation a peut-être changé depuis que cette question a été publiée à l'origine, mais il est désormais possible d'utiliser l'API REST pour obtenir l'historique des versions de n'importe quel élément de liste/bibliothèque :

Cela renverra une série de résultats pour la version actuelle et toutes les versions précédentes, avec les valeurs de colonne de l'élément de chaque version.

Comme avec les autres points de terminaison REST, vous pouvez utiliser $select , $filter , etc. pour manipuler davantage les résultats.


Comprendre et utiliser les API REST

Il y a de fortes chances que vous ayez rencontré le terme & ldquoREST API & rdquo si vous avez pensé à obtenir des données d'une autre source sur Internet, telle que Twitter ou Github. Mais qu'est-ce qu'une API REST ? Que peut-il faire pour vous? Comment l'utilisez-vous?

Dans cet article, vous apprendrez tout ce que vous devez savoir sur les API REST pour pouvoir lire les documentations des API et les utiliser efficacement.

Une partie de : Rest API & GraphQL

Qu'est-ce qu'une API REST

Disons que vous essayez de trouver des vidéos sur Batman sur Youtube. Vous ouvrez Youtube, tapez &ldquoBatman&rdquo dans un champ de recherche, appuyez sur Entrée, et vous voyez une liste de vidéos sur Batman. Une API REST fonctionne de manière similaire. Vous recherchez quelque chose et vous obtenez une liste de résultats du service que vous demandez.

Une API est une interface de programmation d'applications. C'est un ensemble de règles qui permettent aux programmes de communiquer entre eux. Le développeur crée l'API sur le serveur et permet au client de lui parler.

DU REPOS détermine à quoi ressemble l'API. Il signifie &ldquoRepresentational State Transfer&rdquo. C'est un ensemble de règles que les développeurs suivent lorsqu'ils créent leur API. L'une de ces règles stipule que vous devriez pouvoir obtenir une donnée (appelée ressource) lorsque vous créez un lien vers une URL spécifique.

Chaque URL est appelée un demande tandis que les données qui vous sont renvoyées sont appelées réponse.

L'anatomie d'une demande

Il est important de savoir qu'une demande est composée de quatre choses :

Le point final (ou route) est l'url que vous demandez. Il suit cette structure :

Le point de terminaison racine est le point de départ de l'API à partir de laquelle vous demandez. Le point de terminaison racine de l'API de Github est https://api.github.com tandis que le point de terminaison racine de l'API Twitter est https://api.twitter.com .

Le chemin détermine la ressource que vous demandez. Pensez-y comme à un répondeur automatique qui vous demande d'appuyer sur le 1 pour un service, le 2 pour un autre service, le 3 pour un autre service et ainsi de suite.

Rencontrer Optimisation des images, le tout nouveau guide pratique d'Addy Osmani pour optimiser et livrer images de haute qualité sur le Web. Des formats et compression à la livraison et à la maintenance : tout en un seul 528 pages livre.

Vous pouvez accéder aux chemins tout comme vous pouvez créer des liens vers des parties d'un site Web. Par exemple, pour obtenir une liste de tous les articles marqués sous &ldquoJavaScript&rdquo sur Smashing Magazine, accédez à https://www.smashingmagazine.com/tag/javascript/ . https://www.smashingmagazine.com/ est le point de terminaison racine et /tag/javascript est le chemin.

Pour comprendre quels chemins sont disponibles, vous devez parcourir la documentation de l'API. Par exemple, disons que vous souhaitez obtenir une liste de référentiels par un certain utilisateur via l'API de Github. La documentation vous indique d'utiliser le chemin suivant pour le faire :

Les deux points ( : ) sur un chemin indiquent une variable. Vous devez remplacer ces valeurs par les valeurs réelles du moment où vous envoyez votre demande. Dans ce cas, vous devez remplacer :username par le nom d'utilisateur réel de l'utilisateur que vous recherchez. Si je recherche mon compte Github, je remplacerai :username par zellwk .

Le point de terminaison pour obtenir une liste de mes dépôts sur Github est le suivant :

La dernière partie d'un point final est paramètres de requête. Techniquement, les paramètres de requête ne font pas partie de l'architecture REST, mais vous verrez de nombreuses API les utiliser. Donc, pour vous aider à bien comprendre comment lire et utiliser les API, nous allons également en parler. Les paramètres de requête vous donnent la possibilité de modifier votre requête avec des paires clé-valeur. Ils commencent toujours par un point d'interrogation ( ? ). Chaque paire de paramètres est ensuite séparée par une esperluette ( & ), comme ceci :

Lorsque vous essayez d'obtenir une liste des dépôts d'un utilisateur sur Github, vous ajoutez trois paramètres possibles à votre requête pour modifier les résultats qui vous sont donnés :

Github vous permet d'ajouter trois paramètres à votre demande

Si vous souhaitez obtenir une liste des référentiels vers lesquels j'ai poussé récemment, vous pouvez définir sort sur push .

Comment savoir si ce point de terminaison fonctionne ? Eh bien, il est temps d'essayer!

Test des points de terminaison avec curl

Vous pouvez envoyer une requête avec n'importe quel langage de programmation. Les utilisateurs de JavaScript peuvent utiliser des méthodes telles que l'API Fetch et la méthode Ajax de jQuery. Les utilisateurs de Ruby peuvent utiliser la classe Net::HTTP de Ruby, les utilisateurs de Python peuvent utiliser les requêtes Python, etc.

Pour cet article, nous utiliserons l'utilitaire de ligne de commande appelé cURL. Nous utilisons cURL car les documentations de l'API sont normalement écrites en référence à cURL. Si vous comprenez comment utiliser cURL, vous n'aurez aucun problème à comprendre les documentations de l'API. Ensuite, vous pouvez facilement effectuer des demandes avec votre langue préférée.

Avant de continuer, vous devez vous assurer que cURL est installé sur votre machine. Ouvrez votre terminal et tapez curl -version . Cette commande vérifie la version de cURL que vous avez installée sur votre système.

Si vous n'avez pas installé cURL, vous obtiendrez une erreur &ldquocommand not found&rdquo. Si vous obtenez cette erreur, vous devrez installer curl avant de continuer.

Pour utiliser cURL, vous tapez curl , suivi du point de terminaison que vous demandez. Par exemple, pour obtenir le point de terminaison racine de Github, vous tapez ce qui suit :

Une fois que vous avez appuyé sur Entrée, vous devriez obtenir une réponse de Github qui ressemble à ceci :

Réponse du point de terminaison racine de Github

Pour obtenir une liste des référentiels d'un utilisateur, vous modifiez le point de terminaison sur le chemin correct, comme ce que nous avons discuté ci-dessus. Pour obtenir une liste de mes dépôts, vous pouvez utiliser cette commande :

Si vous souhaitez inclure des paramètres de requête avec cURL, assurez-vous d'ajouter une barre oblique inverse ( ) avant le ? et = caractères. Ceci est dû au fait ? et = sont des caractères spéciaux dans la ligne de commande. Vous devez utiliser avant eux pour que la ligne de commande les interprète comme des caractères normaux :

Essayez d'utiliser l'une ou l'autre des commandes et effectuez une requête ! Vous obtiendrez une réponse similaire à ce que vous avez vu avec le root-endpont de Github (mais avec beaucoup plus de données).

JSON (JavaScript Object Notation) un format courant pour envoyer et demander des données via une API REST. La réponse que Github vous renvoie est également au format JSON.

Un objet JSON ressemble à un objet JavaScript. En JSON, chaque propriété et valeur doit être entourée de guillemets doubles, comme ceci :

Retour à l'anatomie d'une requête

Vous avez appris qu'une demande se compose de quatre parties.

Passons en revue le reste de ce qui constitue une demande.

La méthode est le type de requête que vous envoyez au serveur. Vous pouvez choisir parmi ces cinq types ci-dessous :

Ces méthodes donnent un sens à la demande que vous faites. Ils permettent d'effectuer quatre actions possibles : Créer , Lire , Mettre à jour et Supprimer (CRUD).

Nom de la méthode Demande Signification
« OBTENIR » Cette requête est utilisée pour obtenir une ressource d'un serveur. Si vous effectuez une requête « GET », le serveur recherche les données que vous avez demandées et vous les renvoie. En d'autres termes, une requête `GET` effectue une opération `READ`. Il s'agit de la méthode de requête par défaut.
'POSTER' Cette requête est utilisée pour créer une nouvelle ressource sur un serveur. Si vous effectuez une requête `POST`, le serveur crée une nouvelle entrée dans la base de données et vous indique si la création a réussi. En d'autres termes, une requête « POST » effectue une opération « CRÉER ».
« PUT » et « PATCH » Ces deux requêtes permettent de mettre à jour une ressource sur un serveur. Si vous effectuez une requête `PUT` ou `PATCH`, le serveur met à jour une entrée dans la base de données et vous indique si la mise à jour a réussi. En d'autres termes, une requête "PUT" ou "PATCH" effectue une opération "UPDATE".
'SUPPRIMER' Cette requête est utilisée pour supprimer une ressource d'un serveur. Si vous effectuez une requête `DELETE`, le serveur supprime une entrée dans la base de données et vous indique si la suppression a réussi. En d'autres termes, une requête "DELETE" effectue une opération "DELETE".

L'API vous permet de savoir quelle méthode de requête utiliser pour chaque requête. Par exemple, pour obtenir une liste des référentiels d'un utilisateur, vous avez besoin d'une requête GET :

Une requête GET est requise pour obtenir une liste de référentiels d'un utilisateur

Une requête GET est requise pour obtenir une liste de référentiels d'un utilisateur. Pour créer un nouveau dépôt Github, vous avez besoin d'une requête POST :

Une requête POST est requise pour créer un nouveau référentiel

Vous pouvez définir la méthode de requête dans cURL en écrivant -X ou --request , suivi de la méthode de requête. Cette commande ci-dessous essaie de créer un référentiel via cURL :

Essayez d'exécuter cette requête. Vous obtiendrez une réponse vous indiquant que l'authentification est requise. (Plus d'informations sur l'authentification plus tard).

Les en-têtes

Les en-têtes sont utilisés pour fournir des informations à la fois au client et au serveur. Il peut être utilisé à de nombreuses fins, telles que l'authentification et la fourniture d'informations sur le contenu du corps. Vous pouvez trouver une liste d'en-têtes valides sur la référence des en-têtes HTTP de MDN.

Les en-têtes HTTP sont des paires propriété-valeur qui sont séparés par deux points. L'exemple ci-dessous montre un en-tête qui indique au serveur d'attendre du contenu JSON.

Vous pouvez envoyer des en-têtes HTTP avec curl via l'option -H ou --header. Pour envoyer l'en-tête ci-dessus à l'API de Github, vous utilisez cette commande :

(Remarque : l'en-tête Content-Type n'est pas une exigence pour que l'API de Github fonctionne. Ceci n'est qu'un exemple pour illustrer comment utiliser un en-tête avec cURL).

Pour afficher les en-têtes que vous avez envoyés, vous pouvez utiliser l'option -v ou --verbose lors de l'envoi de la demande, comme ceci :

cURL vous donne des informations supplémentaires, qui incluent des en-têtes lorsque vous utilisez l'option verbose

Ici, * fait référence aux informations supplémentaires fournies par cURL. > fait référence aux en-têtes de requête et < aux en-têtes de réponse.

Les données (ou &ldquoBody&rdquo)

Les données (parfois appelées &ldquobody&rdquo ou &ldquomessage&rdquo) contiennent des informations que vous souhaitez envoyer au serveur. Cette option n'est utilisée qu'avec les requêtes POST , PUT , PATCH ou DELETE.

Pour envoyer des données via cURL, vous pouvez utiliser l'option -d ou --data :

Pour envoyer plusieurs champs de données, vous pouvez créer plusieurs options -d :

Si cela a du sens, vous pouvez diviser votre requête en plusieurs lignes pour en faciliter la lecture :

Si vous savez faire tourner un serveur, vous pouvez créer une API et tester vos propres données. Si vous ne savez pas, mais que vous vous sentez assez courageux pour essayer, vous pouvez suivre cet article pour apprendre à créer un serveur avec Node, Express et MongoDB

Si vous ne voulez pas faire tourner votre serveur, vous pouvez aller sur Requestbin.com (c'est gratuit!) et cliquez sur "créer un point de terminaison". Vous recevrez une URL que vous pouvez utiliser pour tester les demandes, comme https://requestb.in/1ix963n1 illustré dans l'image ci-dessous.

Request bin vous donne une URL unique que vous pouvez utiliser pendant 48 heures

Assurez-vous de créer votre propre corbeille de requêtes si vous souhaitez tester votre requête. Les bacs de demande ne restent ouverts que 48 heures après leur création. Au moment où vous lirez cet article, le bac que j'ai créé ci-dessus aura disparu depuis longtemps.

Maintenant, essayez d'envoyer des données à votre corbeille de requêtes, puis actualisez la page Web de votre corbeille. Vous verrez des données, comme ceci :

Les demandes que vous avez envoyées à votre bac apparaîtront comme ceci

Par défaut, cURL envoie les données comme si elles étaient envoyées via des &ldquoform fields&rdquo sur une page. Si vous souhaitez envoyer des données JSON, vous devrez définir le Content-Type sur application/json , et vous devrez formater vos données en tant qu'objet JSON, comme ceci :

Envoi de données au format JSON

Et c'est (presque !) tout ce que vous devez savoir sur la structure d'une requête.

Maintenant, rappelez-vous que lorsque vous avez essayé d'envoyer une requête POST via l'API de Github, vous avez reçu un message indiquant &ldquoRequires authentication&rdquo? Eh bien, c'est parce que vous n'êtes pas autorisé à effectuer la requête POST !

Authentification

Vous ne permettez à personne d'accéder à votre compte bancaire sans votre permission, n'est-ce pas ? Dans le même ordre d'idées, les développeurs mettent en place des mesures pour s'assurer que vous n'effectuez des actions que lorsque vous êtes autorisé à le faire. Cela empêche les autres de se faire passer pour vous.

Étant donné que les requêtes POST , PUT , PATCH et DELETE modifient la base de données, les développeurs les placent presque toujours derrière un mur d'authentification. Dans certains cas, une requête GET nécessite également une authentification (comme lorsque vous accédez à votre compte bancaire pour vérifier votre solde actuel, par exemple).

Sur le Web, il existe deux manières principales de s'authentifier :

La méthode du jeton secret comprend oAuth, qui vous permet de vous authentifier auprès des réseaux de médias sociaux tels que Github, Google, Twitter, Facebook, etc.

Pour cet article, vous apprendrez uniquement à utiliser l'authentification de base avec un nom d'utilisateur et un mot de passe. Si vous souhaitez vous authentifier avec oAuth, je vous suggère de lire &ldquoCe que vous devez savoir sur OAuth2 et la connexion avec Facebook&rdquo par Zack Grossbart.

Pour effectuer une authentification de base avec cURL, vous pouvez utiliser l'option -u, suivie de votre nom d'utilisateur et de votre mot de passe, comme ceci :

Essayez de vous authentifier avec votre nom d'utilisateur et votre mot de passe dans la demande ci-dessus. Une fois que vous avez réussi l'authentification, vous verrez la réponse passer de &ldquoRequires authentication&rdquo à &ldquoProblems parsing JSON.&rdquo

En effet, vous n'avez pas encore fourni de données (requises par toutes les requêtes POST , PUT , PATCH et DELETE) au serveur.

Avec les connaissances que vous avez acquises jusqu'à présent, vous devriez pouvoir modifier le code ci-dessus pour créer un référentiel Github via votre cURL. Je vous laisse essayer vous-même !

Parlons maintenant des codes d'état HTTP et des messages d'erreur.

Codes d'état HTTP et messages d'erreur

Certains des messages que vous avez reçus précédemment, comme &ldquoRequires authentication&rdquo et &ldquoProblems parsing JSON&rdquo sont des messages d'erreur. Ils n'apparaissent que lorsque quelque chose ne va pas avec votre demande. Les codes d'état HTTP vous permettent d'indiquer rapidement l'état de la réponse. La gamme de 100+ à 500+. En général, les nombres suivent les règles suivantes :

  1. 200+ signifie que la demande a réussi.
  2. 300+ signifie que la demande est redirigé vers une autre URL
  3. 400+ signifie un erreur qui provient du client s'est produit
  4. 500+ signifie un erreur qui vient du serveur s'est produit

Vous pouvez déboguer l'état d'une réponse avec l'option verbose ( -v ou --verbose ) ou l'option head ( -I ou --head ).

Par exemple, si vous essayez d'ajouter -I à une requête POST sans fournir votre nom d'utilisateur et votre mot de passe, vous obtiendrez un code d'état 401 (Non autorisé) :

Exemple de demande non autorisée

Si votre demande est invalide parce que vos données sont erronées ou manquantes, vous obtenez généralement un code de statut 400 (Bad Request).

Exemple de mauvaise demande

Pour obtenir plus d'informations sur des codes d'état HTTP spécifiques, vous pouvez consulter la référence d'état HTTP de MDN.

Versions d'API

Les développeurs mettent à jour leurs API de temps en temps. Parfois, l'API peut tellement changer que le développeur décide de mettre à niveau son API vers une autre version. Si cela se produit et que votre application tombe en panne, c'est généralement parce que vous avez écrit du code pour une ancienne API, mais que votre demande pointe vers la nouvelle API.

Vous pouvez demander une version d'API spécifique de deux manières. La façon dont vous choisissez dépend de la façon dont l'API est écrite.

Twitter, par exemple, utilise la première méthode. Au moment de la rédaction, l'API de Twitter est à la version 1.1, ce qui est évident à travers son point de terminaison :

Github, quant à lui, utilise la deuxième méthode. Au moment de la rédaction, l'API de Github est à la version 3, et vous pouvez spécifier la version avec un en-tête Accept :

Emballer

Dans cet article, vous avez appris ce qu'est une API REST et comment utiliser cURL pour effectuer une requête avec les méthodes GET , POST , PUT , PATCH et DELETE. De plus, vous avez également appris comment authentifier vos requêtes avec l'option -u et ce que signifient les statuts HTTP.

J'espère que cet article vous a aidé à en apprendre suffisamment sur les API REST et que vous pourrez les utiliser couramment lors de la création de vos applications. N'hésitez pas à visiter mon blog ou à laisser vos commentaires ci-dessous si vous avez des questions.


1.3. Points de terminaison d'API REST Process Server pris en charge

L'API REST Process Server fournit des points de terminaison pour les types de ressources suivants dans Red Hat Process Automation Manager :

  • Process Server et conteneurs KIE
  • Actifs de session KIE (pour les commandes d'exécution)
  • Actifs DMN
  • Solveurs de planification
  • Processus
  • Traiter les images
  • Formulaires de processus et de tâches
  • Tâches
  • Cas
  • Documents
  • Travaux
  • Requêtes pour les processus, les tâches et les cas
  • Requêtes personnalisées

L'URL de base de l'API REST Process Server est http://SERVER:PORT/kie-server/services/rest/ . Toutes les demandes nécessitent une authentification de base HTTP ou une authentification basée sur des jetons pour le rôle d'utilisateur du serveur Kie.

Pour obtenir la liste complète des points de terminaison et des descriptions de l'API REST Process Server, utilisez l'une des ressources suivantes :

  • API REST Execution Server sur la page Documentation jBPM (statique)
  • Interface utilisateur Swagger pour l'API REST Process Server à l'adresse http://SERVER:PORT/kie-server/docs (dynamique, nécessite l'exécution de Process Server)

Exigences relatives aux points de terminaison

Notez les exigences suivantes pour certains des points de terminaison de l'API REST Process Server :

    Images de processus : Pour l'accès API aux images de processus, la propriété système <storesvgonsave enabled="true"/> doit être configurée pour votre projet Red Hat Process Automation Manager dans $SERVER_HOME/standalone/deployments/business-central.war/org.kie.workbench.KIEWebapp /profiles/jbpm.xml . Si cette propriété n'est pas définie ou définie sur false , définissez-la sur true , redémarrez votre Process Server, modifiez le processus approprié et enregistrez-le, puis générez et déployez votre projet. Cette propriété permet de stocker des images SVG afin qu'elles puissent être récupérées par l'API REST de Process Server.

Requêtes personnalisées : Certaines requêtes de requête personnalisées avec l'API REST Process Server nécessitent une définition de mappeur de requête pour mapper les résultats de la requête à des objets concrets. Vous pouvez implémenter vos propres mappeurs de résultats de requête ou utiliser les mappeurs fournis avec Red Hat Process Automation Manager. Les mappeurs de requêtes dans Red Hat Process Automation Manager sont similaires à d'autres fournisseurs de mappage objet-relationnel (ORM), tels que Hibernate, qui mappe les tables aux entités. Par exemple, vous pouvez utiliser org.jbpm.kie.services.impl.query.mapper.ProcessInstanceQueryMapper , également enregistré en tant que ProcessInstances , dans les points de terminaison de requête personnalisés pour renvoyer les données d'instance de processus.

Exemple de point de terminaison POST avec le paramètre de mappeur ProcessInstances :

Pour obtenir une liste des mappeurs de requêtes disponibles dans Red Hat Process Automation Manager, téléchargez et extrayez le Distribution des sources de Red Hat Process Automation Manager 7.1 depuis le portail client Red Hat et accédez à