Skip To Content

Uso de secuencias de comandos con API REST de ArcGIS

ArcGIS Enterprise se puede administrar simplemente mediante solicitudes a API REST de ArcGIS. Incluso cuando se están llevando a cabo tareas administrativas a través del servidor o portal, las llamadas a la API se realizan en el back-end. Para escribir scripts que administren ArcGIS Enterprise, debe elegir un lenguaje de scripts que permita construir las direcciones URL, realizar solicitudes de HTTP y analizar las respuestas de HTTP. Los ejemplos en este sistema de ayuda utilizan Python.

La API no requiere el software Esri en el equipo en el que se ejecuta la secuencia de comandos. Todo lo que se necesita es un entorno en el que se puedan realizar solicitudes HTTP al portal.

Primeros pasos

Para utilizar la API REST de ArcGIS, se crea una solicitud HTTP de la operación que se desea realizar y se incluyen los parámetros requeridos para esa operación. Puede familiarizarse con las operaciones administrativas y sus parámetros requeridos navegando por la serie de directorios que le permiten interactuar con los API REST de ArcGIS. Las API REST ArcGIS Enterprise se exponen a través de dos portal y dos directorios del servidor.

Utilizar API REST de ArcGISs

Los directorios del portal y del servidor proporcionan vistas interactivas de los recursos API REST de ArcGIS para su organización. El uso de estos directorios puede ayudarle a entender cómo escribir scripts administrativos para su organización.

Las direcciones URL de los directorios del portal tienen el siguiente formato:

Las direcciones URL de los directorios del servidor tienen el siguiente formato:

Para familiarizarse con API REST de ArcGIS, utilice uno de los directorios para realizar una tarea administrativa. Tenga en cuenta los parámetros que se requiere que introduzca y examine la dirección URL en la barra de direcciones del navegador cuando realiza la solicitud al servidor. Las herramientas de desarrollador Web como Fiddler o Firebug pueden ser útiles para ver todo el cuerpo de la solicitud y respuesta. Esta información es extremadamente valiosa cuando se están intentando construir sus propias peticiones a través de peticiones HTTP administrativas a través de Python o de otro lenguaje de scripts.

Generar y utilizar un token en scripts

Al administrar su organización a través del portal, el servidor o sus directorios respectivos, debe indicar el nombre de usuario y la contraseña de una cuenta con los privilegios adecuados. Se aplica el mismo concepto cuando escriba scripts. Sin embargo, debe entender cómo tiene lugar la autenticación cuando utiliza scripts para administrar su organización.

Si su organización está configurada para usar cuentas integradas y autenticación mediante token, puede usar las mismas cuentas administrativas y direcciones URL para las secuencias de comandos que usaría con los directorios del portal y del servidor. Si su organización está configurada con inicios de sesión específicos de la organización y la autenticación de nivel web, se recomienda hacer que las secuencias de comandos omitan el Web Adaptor. Utilice la cuenta de administrador inicial creada después de instalar Portal for ArcGIS para acceder al portal o a la cuenta del administrador principal del sitio creada después de instalar ArcGIS Server para acceder al servidor.

En cualquier caso, se le devuelve un token, que es una cadena especial de caracteres que comunica al portal o al servidor que ha sido autenticado para realizar ciertos tipos de acciones. Debe incluir este token en cualquier solicitud de servicio web que realice.

La siguiente función de Python solicita un token de portal. La URL del portal, el nombre de usuario y la contraseña se indican como argumentos.

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)

La siguiente función de Python solicita un token de servidor. La URL del servidor, el nombre de usuario y la contraseña se indican 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)

El token no dura para siempre; está diseñado para cierto tiempo a fin de que no pueda ser robado o utilizado de forma indefinida por un usuario malicioso. Por lo general, tiene que solicitar un nuevo token cada vez que ejecute el script (pero no cada vez que haga una solicitud). En algunos casos excepcionales, los tokens pueden caducar antes de que finalice la ejecución de su script. Si su solicitud incluye un token caducado, la respuesta del servidor incluirá un error indicando que su token ha caducado. Si esto ocurre, actualice su token y continúe la ejecución de su script.

Trabajar con solicitudes y respuestas

Para hacer una solicitud de servicio, es necesario formular la dirección URL correspondiente a la acción que se desea realizar, así como los parámetros requeridos para esa acción. Uno de los parámetros requeridos es un token como el generado anteriormente.

Todas las acciones administrativas producen una respuesta de servicio Web que por lo general pide en formato JavaScript Object Notation (JSON). Los lenguajes de secuencia de comandos como Python tienen bibliotecas que pueden analizar y leer respuestas JSON. A veces solo desea obtener el código de estado HTTP para averiguar si su solicitud ha tenido éxito (por ejemplo, un código 200 significa Ok). Otras veces, la respuesta puede tener datos, como mensajes de registro, que es preciso analizar y estudiar más en profundidad.