Skip To Content

Skripterstellung mit der ArcGIS REST API

ArcGIS Enterprise kann ausschließlich über Anforderungen an die ArcGIS REST API verwaltet werden. Auch wenn Sie über Ihren Server oder Ihr Portal Verwaltungsaufgaben durchführen, erfolgen Aufrufe an die API im Back-End. Um Skripte zu schreiben, die ArcGIS Enterprise 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. In den Beispielen in dieser Hilfe wird Python verwendet.

Für die Nutzung der API muss auf dem Computer, auf dem Sie das Skript ausführen, keine Esri Software installiert sein. Sie benötigen nur eine Umgebung, in der Sie HTTP-Anforderungen an das Portal ausführen können.

Erste Schritte

Zum Verwenden der ArcGIS 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. Sie können sich mit den administrativen Vorgängen und den erforderlichen Parametern vertraut machen, indem Sie die Verzeichnisse durchsuchen, die Ihnen die Interaktion mit der ArcGIS REST API ermöglichen. Die ArcGIS Enterprise REST APIs werden über zwei Portal- und zwei Serververzeichnisse bereitgestellt.

Verwenden der ArcGIS REST APIs

Die Portal- und Serververzeichnisse bieten interaktive Ansichten der Ressourcen der ArcGIS REST API für die Organisation. Indem Sie diese Verzeichnisse verwenden, können Sie verstehen, wie Sie administrative Skripte für Ihre Organisation schreiben.

Die URLs zu den Portalverzeichnissen haben das folgende Format:

Die URLs zu den Serververzeichnissen haben das folgende Format:

Führen Sie eine administrative Aufgabe mit einem der Verzeichnisse durch, um sich mit der ArcGIS REST API vertraut zu machen. 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 wertvoll, wenn Sie versuchen, Ihre eigenen administrativen HTTP-Anforderungen über Python oder eine andere Skripterstellungssprache zu generieren.

Generieren und Verwenden eines Token in Skripten

Wenn Sie die Organisation über das Portal, den Server oder die jeweiligen Verzeichnisse verwalten, müssen Sie den Benutzernamen und das Kennwort eines Kontos mit den entsprechenden Berechtigungen angeben. Das gleiche Konzept gilt auch, wenn Sie Skripte schreiben. Sie müssen jedoch wissen, wie die Authentifizierung erfolgt, wenn Sie Skripte zum Verwalten der Organisation nutzen.

Ist die Organisation für die Verwendung von integrierten Konten und Token-Authentifizierung konfiguriert, so können Sie für Ihre Skripte dieselben Administratorkonten und URLs verwenden, die Sie auch für die Portal- und Serververzeichnisse verwenden. Sofern die Organisation mit organisationsspezifischen Anmeldedaten und der Authentifizierung auf Webebene konfiguriert ist, wird empfohlen, dass Web Adaptor von Ihren Skripten umgangen wird. Verwenden Sie das initiale Administratorkonto, das nach der Installation von Portal for ArcGIS erstellt wurde, um auf das Portal zuzugreifen, oder das primäre Site-Administratorkonto, das nach der Installation von ArcGIS Server erstellt wurde, um auf den Server zuzugreifen.

In beiden Fällen wird ein Token zurückgegeben, also eine spezielle Zeichenfolge, die dem Portal oder dem Server mitteilt, dass Sie zum Durchführen bestimmter Aktionstypen berechtigt sind. Sie müssen dieses Token allen Web-Service-Anforderungen hinzufügen.

Die folgende Python-Funktion erfordert ein Portal-Token. Die Portal-URL, der Benutzername und das Kennwort werden als Argumente bereitgestellt.

def generateToken(username, password, portalUrl):
    '''Retrieves a token to be used with API requests.'''
    data = urllib.parse.urlencode({'username' : username,
                                   'password' : password,
                                   'client' : 'referer',
                                   'referer': portalUrl,
                                   'expiration': 60,
                                   'f' : 'json'}).encode('utf-8')
    response = urllib.request.urlopen(portalUrl + '/sharing/rest/generateToken',
                                      data).read().decode('utf-8')
    try:
        jsonResponse = json.loads(response)
        if 'token' in jsonResponse:
            return jsonResponse['token']
        elif 'error' in jsonResponse:
            print(jsonResponse['error']['message'])
            for detail in jsonResponse['error']['details']:
                print(detail)
    except ValueError as e:
        print('An unspecified error occurred.')
        print(e)

Die folgende Python-Funktion erfordert ein Server-Token. Die Server-URL, der Benutzername und das Kennwort werden als Argumente bereitgestellt.

def generateToken(username, password, serverUrl):
    '''Retrieves a token to be used with API requests.'''
    data = urllib.parse.urlencode({'username' : username,
                                   'password' : password,
                                   'client' : 'referer',
                                   'referer': serverUrl,
                                   'expiration': 60,
                                   'f' : 'json'}).encode('utf-8')
    response = urllib.request.urlopen(serverUrl + '/tokens/generateToken',
                                      data).read().decode('utf-8')
    try:
        jsonResponse = json.loads(response)
        if 'token' in jsonResponse:
            return jsonResponse['token']
        elif 'error' in jsonResponse:
            print(jsonResponse['error']['message'])
            print(jsonResponse['error']['details'])
    except ValueError as e:
        print('An unspecified error occurred.')
        print(e)

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. In der Regel müssen Sie jedes Mal, wenn Sie Ihr Skript ausführen, einen neuen Token anfordern (allerdings nicht bei jeder Anforderung). In einigen Ausnahmefällen können Token ablaufen, bevor die Skriptausführung beendet wird. Wenn Ihre Anforderung einen abgelaufenen Token aufweist, enthält die Antwort vom Server einen Fehler, der darauf hinweist, dass der Token abgelaufen ist. Aktualisieren Sie in diesem Fall das Token, und setzen Sie die Ausführung des Skripts fort.

Arbeiten mit Anforderungen und Antworten

Um eine Web-Service-Anforderung zu erstellen, müssen Sie die URL für die gewünschte Aktion sowie die erforderlichen Parameter angeben. Einer der erforderlichen Parameter ist ein Token wie das oben generierte.

Alle Verwaltungsaktionen erzeugen eine Web-Service-Antwort, die Sie normalerweise im JSON-Format (JavaScript Object Notation) anfordern. Skriptsprachen wie Python verfügen über Bibliotheken, die eine JSON-Antwort parsen (d. h. lesen) können. Mitunter möchten Sie nur anhand des HTTP-Statuscodes erkennen können, ob eine Anforderung erfolgreich war (Beispiel: Der Code 200 bedeutet OK). In anderen Fällen enthält die Antwort möglicherweise Daten, wie zum Beispiel Protokollmeldungen, die Sie weiter analysieren und untersuchen möchten.