Skripterstellung mit der ArcGIS-REST-API

ArcGIS-Server wird ausschließlich über Web-Service-Anforderungen an die ArcGIS-REST-API verwaltet. (Auch wenn Sie Ihren Server mit ArcGIS Server Manager verwalten, werden Aufrufe an die REST-API auf dem Back-End durchgeführt.) Um Skripten zu schreiben, die ArcGIS for Server verwalten, müssen Sie eine Skripterstellungssprache auswählen, die es Ihnen ermöglicht, URLs zu erstellen, HTTP-Anforderungen auszuführen und HTTP-Antworten zu analysieren. Die Beispiele in diesem Hilfesystem verwenden Python.

Beachten Sie, dass auf dem Computer, über den Sie das Skript ausführen, keine Esri Software installiert sein muss, um die ArcGIS-REST-API verwenden zu können. Sie benötigen nur eine Umgebung, in der Sie HTTP-Anforderungen an Ihren GIS-Server ausführen können.

Erste Schritte mit der Serververwaltung unter Verwendung der ArcGIS-REST-API

Zum Verwenden der REST-API erstellen Sie eine HTTP-Anforderung für den Vorgang, den Sie durchführen möchten, und schließen Sie die erforderlichen Parameter für diesen Vorgang ein. Die folgende HTTP-Anforderung fügt beispielsweise einen neuen Computer zu Ihrer Site hinzu:

http://gisserver.domain.com:6080/arcgis/admin/machines/registermachineName=GISSERVER1.DOMAIN.COMadminURL=http://GISSERVER1.DOMAIN.COM:6080/arcgis/admin

Eine einfache Möglichkeit, sich mit den verfügbaren Verwaltungsvorgängen und ihren erforderlichen Parametern vertraut zu machen, ist das Verwenden des ArcGIS Server Administrator Directory.

Verwenden des Administratorverzeichnisses (ArcGIS Server Administrator Directory)

Das ArcGIS Server Administrator Directory ist eine Webanwendung, mit der Sie Verwaltungsskripte für ArcGIS for Server schreiben können. Das Administratorverzeichnis ist normalerweise unter http://gisserver.domain.com:6080/arcgis/admin verfügbar.

Stellen Sie sich das Administratorverzeichnis als Plan zu den ArcGIS-Server-Ressourcen vor, die durch die REST-API bereitgestellt wird. Sie können durch die Links im Administratorverzeichnis navigieren, um zu erfahren, welche URLs und Parameter in Ihren administrativen Web-Service-Anforderungen verwendet werden sollen. Sie können diese Anforderungen dann konvertieren und über HTTP mithilfe einer Skriptsprache Ihrer Wahl senden.

Verwenden Sie das Administratorverzeichnis zum Ausführen einer Verwaltungsaufgaben. Beachten Sie die Parameter, die Sie eingeben müssen, und sehen Sie sich die URL in der Adressleiste Ihres Browsers an, während Sie die Anforderung an den Server ausführen. Web-Entwickler-Werkzeuge, wie zum Beispiel Fiddler oder Firebug, können nützlich sein, um die Anforderungen und die Antwort vollständig anzuzeigen. Diese Informationen sind sehr wertvoll, wenn Sie versuchen, Ihre eigenen administrativen HTTP-Anforderungen über Python oder eine andere Skripterstellungssprache zu generieren.

Obwohl Sie das Administratorverzeichnis interaktiv verwenden können, um diese Verwaltungsaufgaben durchzuführen, wird diese Webanwendung am besten als Lernwerkzeug eingesetzt, um sich mit der REST-API vertraut zu machen. Die beabsichtigte Webanwendung für die ArcGIS for Server-Administration ist ArcGIS Server Manager.

Abrufen und Verwenden eines Tokens in Skripten

Wenn Sie sich an Manager oder am Administratorverzeichnis anmelden, müssen Sie den Benutzernamen und das Kennwort eines Kontos mit Administrator- oder Publisher-Rechten für ArcGIS for Server angeben. Das gleiche Konzept gilt auch, wenn Sie Skripte schreiben. Sie müssen programmgesteuert einen Namen und ein Kennwort an den Server senden. Der Server gibt Ihnen ein Token zurück, also eine spezielle Zeichenfolge, die dem Server beweist, dass Sie zum Durchführen bestimmter Aktionstypen berechtigt sind. Sie müssen dieses Token in allen Web-Service-Anforderungen an den Server einschließen.

Das Token hat nur eine begrenzte Gültigkeit. Es wurde so entwickelt, dass es abläuft, damit es nicht gestohlen und unbegrenzt von einem bösartigen Benutzer verwendet werden kann. Jedes Mal, wenn Sie Ihr Skript ausführen, müssen Sie ein neues Token anfordern (allerdings nicht bei jeder Anforderung).

Die folgenden Python-Funktion erfordert ein Token. Der Servername, die Portnummer, der Benutzername und das Kennwort werden als Argumente bereitgestellt.

Fordert ein administratives Token von ArcGIS for Server an

def getToken(username, password, serverName, serverPort):
    # Token URL is typically http://server[:port]/arcgis/admin/generateToken
    tokenURL = "/arcgis/admin/generateToken"
    
    # URL-encode the token parameters:-
    params = urllib.urlencode({'username': username, 'password': password, 'client': 'requestip', 'f': 'json'})
    
    headers = {"Content-type": "application/x-www-form-urlencoded", "Accept": "text/plain"}
    
    # Connect to URL and post parameters
    httpConn = httplib.HTTPConnection(serverName, serverPort)
    httpConn.request("POST", tokenURL, params, headers)
    
    # Read response
    response = httpConn.getresponse()
    if (response.status != 200):
        httpConn.close()
        print "Error while fetch tokens from admin URL. Please check the URL and try again."
        return
    else:
        data = response.read()
        httpConn.close()
           
        # Extract the token from it
        token = json.loads(data)        
        return token['token']

Arbeiten mit Anforderungen und Antworten

Um eine Web-Service-Anforderung für ArcGIS for Server zu erstellen, müssen Sie die URL für die gewünschte Aktion sowie die erforderlichen Parameter angeben. Auf einem sicheren Server ist einer der erforderlichen Parameter ein Token wie das oben erzeugte.

Alle Verwaltungsaktionen erzeugen eine Web-Service-Antwort, die Sie normalerweise im JSON-Format (JavaScript Object Notation) anfordern. Skripterstellungssprachen, wie zum Beispiel Python, verfügen über Bibliotheken, die eine JSON-Antwort analysieren oder lesen können. Manchmal möchten Sie einfach den HTTP-Statuscode abrufen, um herauszufinden, ob Ihre Anforderung erfolgreich war (der Code 200 bedeutet beispielsweise OK). In anderen Fällen enthält die Antwort möglicherweise Daten, wie zum Beispiel Protokollmeldungen, die Sie weiter analysieren und untersuchen möchten.

Weitere Informationen zum programmgesteuerten Senden einer Anforderung an ArcGIS for Server und zum Arbeiten mit einer Antwort finden Sie in den verschiedenen Codebeispielen in dieser Hilfe.

Verwandte Themen

5/16/2014