Übermitteln einer GET-Anforderung an die REST API
Für einen rpc
Befehl ist das allgemeine Format der Endpunkte:
scheme://device-name:port/rpc/method[@attributes]/params
scheme
:http
oderhttps
method
: Der Name jedes beliebigen Junos OSrpc
Befehls. Dermethod
Name ist identisch mit dem Tag-Element. Weitere Informationen finden Sie in der Operational Developer Reference für Junos XML-API.params
: Optionale Parameterwerte (name[=value]
)
Um Ihre Anfrage zu authentifizieren, reichen Sie den in der Autorisierungsüberschrift enthaltenen Basis-64-codierten Benutzernamen und Kennwort ein:
curl -u "username:password" http://device-name:port/rpc/get-interface-information
Um Daten als Abfragezeichenfolge im URI für GET-Anforderungen anzugeben, können Sie einen der folgenden URI mit der Trennung mehrerer Zeichenfolgen verwenden oder das in diesen rpc
cURL-Anrufen dargestellte ?
&
Delimiter /
verwenden:
Zum Beispiel:
curl -u "username:password" http://device-name:port/rpc/get-interface-information?interface-name=cbp0&snmp-index=1
curl -u "username:password" http://device-name:port/rpc/get-interface-information/interface-name=cbp0/snmp-index=1
HTTP-Header "Akzeptieren" können verwendet werden, um das Rückformat mit einem der folgenden Werte des Inhaltstyps anzugeben:
Anwendung/XML (Standard)
anwendung/json
Text/Nur-Text
Text/HTML
Der folgende cURL-Anruf gibt z. B. ein Ausgabeformat von JSON an:
curl -u "username:password" http://device-name:port/rpc/get-interface-information?interface-name=cbp0 –header "Accept: application/json"
Sie können auch das Ausgabeformat mit den optionalen format
Parametern angeben.
Das Tag-Element ruft <get-software-information>
beispielsweise Revisionsebenen des Softwareprozesses ab. Die folgende HTTPS-GET-Anforderung führt diesen Befehl aus und ruft die Ergebnisse im JSON-Format ab:
https://device-name:3000/rpc/get-software-information@format=json
Das folgende Python-Programm führt die REST-Schnittstelle aus, um den RPC auszuführen, die Daten aus der Antwort zu extrahieren und einen Diagramm des get-route-engine-information
CPU-Lastdurchschnitts zu zeichnen:
import numpy as np import matplotlib.pyplot as plt import matplotlib.animation as animation import requests temp_y = 1 def update_line(num, data, line): if num == 0: return line, global temp_y x_data.append(num) if num is not 0 and num%8 == 1: r = requests.get('scheme://device:port/rpc/get-route-engine-information@format=json', auth=('username', 'password')) if r: temp_y = r.json()["route-engine-information"][0]["route-engine"][0]["load-average-one"][0]["data"] y_data.append(temp_y) line.set_data(x_data, y_data) return line, 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()
