Skip To Content

Script com o ArcGIS REST API

O ArcGIS Enterprise pode ser administrado puramente por meio de solicitações ao ArcGIS REST API. Mesmo quando você está realizando tarefas administrativas por meio de seu servidor ou portal, as chamadas para a API estão sendo feitas no back-end. Para escrever scripts que administram o ArcGIS Enterprise, você deve escolher uma linguagem de script que permita construir URLs, fazer solicitações HTTP e analisar respostas HTTP. Os exemplos neste sistema de ajuda utilizam Python.

O uso da API não requer software Esri na máquina na qual você executa o script. Tudo que você precisa é um ambiente onde você possa fazer pedidos de HTTP para seu portal.

Iniciar

Para usar o ArcGIS REST API, você cria uma solicitação HTTP para a operação que deseja executar e inclui os parâmetros necessários para essa operação. Você pode se familiarizar com as operações administrativas e seus parâmetros necessários navegando na série de diretórios que permitem interagir com o ArcGIS REST APIs. As APIs REST do ArcGIS Enterprise são expostas por meio de dois portais e dois diretórios de servidor.

Use o ArcGIS REST APIs

Os diretórios do portal e do servidor fornecem exibições interativas das feições ArcGIS REST API para sua organização. O uso desses diretórios pode ajudá-lo a entender como escrever scripts administrativos para sua organização.

As URLs para os diretórios do portal são formatadas da seguinte forma:

As URLs para os diretórios do servidor são formatadas da seguinte maneira:

Para ganhar familiaridade com o ArcGIS REST API, use um dos diretórios para executar uma tarefa administrativa. Observe os parâmetros que você é solicitado para inserir e examine a URL na barra de endereço do seu navegador conforme criar o pedido no servidor. As ferramentas de desenvolvedor da web como Fiddler ou Firebug podem ser úteis para visualizar o corpo completo do pedido e resposta. Essas informações são valiosas quando você está tentando construir suas próprias solicitações HTTP administrativas por meio do Python ou outra linguagem de script.

Gerar e usar um token em scripts

Ao administrar sua organização através do portal, servidor ou seus respectivos diretórios, você precisa fornecer o nome de usuário e a senha de uma conta com os privilégios apropriados. O mesmo conceito se aplica quando você escrever scripts. No entanto, você deve entender como ocorre a autenticação ao usar scripts para administrar sua organização.

Se sua organização estiver configurada para usar contas internas e autenticação de token, você pode usar as mesmas contas administrativas e URLs para seus scripts que usaria com os diretórios do portal e do servidor. Se sua organização estiver configurada com logins específicos da organização e autenticação em nível da web, é recomendável que seus scripts ignorem o adaptador da web. Use a conta de administrador inicial criado após a instalação do Portal for ArcGIS para acessar o portal ou a conta principal do administrador do site criado após a instalação do ArcGIS Server para acessar o servidor.

Em ambos os casos, você recebe um token, que é uma string especial de caracteres que se comunica com o portal ou servidor que você foi autenticado para executar determinados tipos de ações. Você deve incluir esse token em todas as solicitações de serviço da web que fizer.

A função a seguir do Python solicita um token do portal. A URL do portal, nome de usuário e senha são fornecidos como parâmetros.

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)

A seguinte função do Python solicita um token de servidor. A URL, o nome de usuário e a senha do servidor são fornecidos como argumentos.

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)

O token não dura para sempre; ele é projetado para expirar de forma que não possa ser roubado e utilizado indefinidamente por um usuário malicioso. Você tem que solicitar um novo token todo vez que executar seu script (mas não toda vez que fizer um pedido). Em alguns casos excepcionais, os tokens podem expirar antes que a execução do seu script termine. Se o seu pedido incluir um token expirado, a resposta do servidor incluirá um erro indicando que seu token expirou. Se isso ocorrer, atualize seu token e continue a execução de seu script.

Trabalhar com solicitações e respostas

Para fazer um pedido de serviço da web, você precisa formular a URL para a ação que você deseja tomar, como também, os parâmetros exigidos para esta ação. Um dos parâmetros necessários é um token como o gerado acima.

Todas as ações administrativas produzem uma resposta do serviço da web, que você normalmente solicitará no formato JavaScript Object Notation (JSON). As linguagens de script como Python têm bibliotecas que podem analisar ou ler uma resposta de JSON. Às vezes, você deseja apenas obter o código de status HTTP para descobrir se sua solicitação foi bem-sucedida (por exemplo, um código de 200 significa OK). Outras vezes, a resposta pode conter dados, como mensagens de log, que você deseja analisar e examinar posteriormente.