Envoi d’une requête GET à l’API REST
Pour une rpc
commande, le format général des points de terminaison est le suivant :
scheme://device-name:port/rpc/method[@attributes]/params
-
scheme
:http
ouhttps
-
method
: nom de n’importe quelle commande Junos OSrpc
. Lemethod
nom est identique à l’élément tag. Pour plus d’informations, reportez-vous à l’Explorateur d’API XML Junos. -
params
: Valeurs de paramètre facultatives (name[=value]
).
Pour authentifier votre demande, vous pouvez utiliser l’une des méthodes suivantes. Nous vous recommandons d’utiliser cette netrc
option car elle est plus sécurisée.
-
Indiquez le nom d’utilisateur et le mot de passe codés en base64 inclus dans l’en-tête Authorization.
curl -u "username:password" http://device-name:port/rpc/get-interface-information
-
Vous pouvez également utiliser un fichier .netrc pour stocker les informations d’identification.
Dans le répertoire personnel de l'utilisateur, créez le fichier .netrc et spécifiez le nom d'hôte, le nom d'utilisateur et le mot de passe de l'équipement distant. Par exemple:
user@host:~$ cat ~/.netrc machine 172.16.2.1 login username password password
Assurez-vous que seul l’utilisateur dispose des droits de lecture et d’écriture sur le fichier.
user@host:~$ chmod 600 .netrc
Dans la demande, spécifiez l’option
--netrc
. Par exemple:user@host:~$ curl --netrc http://172.16.2.1:3000/rpc/get-interface-information
Pour spécifier rpc
des données en tant que chaîne de requête dans l’URI des requêtes GET, vous pouvez utiliser un ?
URI suivi avec le &
délimiteur séparant plusieurs arguments, ou utiliser le /
délimiteur, comme indiqué dans ces appels cURL équivalents :
Par exemple:
curl --netrc http://device-name:port/rpc/get-interface-information?interface-name=cbp0&snmp-index=1
curl --netrc http://device-name:port/rpc/get-interface-information/interface-name=cbp0/snmp-index=1
Les en-têtes HTTP Accept peuvent être utilisés pour spécifier le format de retour à l’aide de l’une des valeurs Content-Type suivantes :
-
application/xml (valeur par défaut)
-
application/json
-
texte/brut
-
texte/html
Par exemple, l’appel cURL suivant spécifie un format de sortie JSON :
curl --netrc http://device-name:port/rpc/get-interface-information?interface-name=cbp0 --header "Accept: application/json"
Vous pouvez également spécifier le format de sortie à l'aide du paramètre facultatif format
du RPC de Junos OS.
Par exemple, l’élément <get-software-information>
tag récupère les niveaux de révision des processus logiciels. La requête HTTPS GET suivante exécute cette commande et récupère les résultats au format JSON :
https://device-name:port/rpc/get-software-information@format=json
Le programme Python suivant utilise l’interface REST pour exécuter le get-route-engine-information
RPC, extrait les données de la réponse et trace un graphique de la charge moyenne du processeur. Le requests
module vérifie automatiquement le fichier .netrc de l'utilisateur pour les informations d'identification associées à l'équipement spécifié. Vous pouvez également inclure l’argument auth=(username, password )
dans la demande de fourniture d’informations d’identification.
import numpy as np import matplotlib.pyplot as plt import matplotlib.animation as animation import requests def update_line(num, data, line): if num == 0: return line, global temp_y x_data.append(num) if num != 0 and num%8 == 1: r = requests.get('http://' + device + '/rpc/get-route-engine-information@format=json') if r: temp_y = r.json()['route-engine-information'][0]['route-engine'][0]['load-average-one'][0]['data'] y_data.append(float(temp_y)) line.set_data(x_data, y_data) return line, device = input('Enter device:port ') temp_y = 1 fig1 = plt.figure() x_data = [] y_data = [] l, = plt.plot([], []) plt.xlim(0, 80) plt.ylim(0, 1.5) plt.xlabel('Time in seconds') plt.ylabel('CPU utilization (load average)') plt.title('REST-API test') line_ani = animation.FuncAnimation(fig1, update_line, 80, fargs=(0, l), interval=1000, blit=True) plt.show()
