Skip To Content

Написание скриптов с использованием ArcGIS REST API

ArcGIS Server администрируется исключительно путем запросов веб-сервиса к ArcGIS REST API. (Даже когда для администрирования сервера вы используете ArcGIS Server Manager, запросы к REST API выполняются на серверной части.) Для написания скриптов администрирования ArcGIS Server необходимо выбрать язык скрипта, который позволит вам создавать URL-адреса, делать запросы по протоколу HTTP, а также разбирать ответы на эти запросы HTTP. В примерах, приведенных в настоящей справке, используется язык Python.

Важно отметить, что использование ArcGIS REST API не требует наличия программного обеспечения Esri на компьютере, с которого выполняется скрипт. Вам требуется только среда, которая позволяет вам выполнять запросы HTTP к вашему серверу ГИС.

Более подробно об ArcGIS Server Administrator Directory

Начало администрирования сервера с использованием ArcGIS REST API

Для использования ArcGIS REST API необходимо создать запрос по протоколу HTTP на операцию, которую вы желаете выполнить, и включить в него необходимые для ее выполнения параметры. Например, следующий HTTP-запрос присоединяет новый компьютер к сайту:

https://gisserver.domain.com:6443/arcgis/admin/machines/registermachineName=GISSERVER1.DOMAIN.COMadminURL=https://GISSERVER1.DOMAIN.COM:6443/arcgis/admin

Ознакомиться с доступными операциями администрирования и их параметрами можно с помощью ArcGIS Server Administrator Directory.

Использование Administrator Directory

ArcGIS Server Administrator Directory представляет собой веб-приложение, с помощью которого можно создавать скрипты для администрирования ArcGIS Server. Administrator Directory обычно доступен по адресу https://gisserver.domain.com:6443/arcgis/admin.

Administrator Directory представляет собой дорожную карту к ресурсам ArcGIS Server, предоставляемых посредством REST API. Навигация по ссылкам в Administrator Directory позволяет ознакомиться с URL и параметрами для использования в запросах к вашему веб-сервису администрирования. Эти запросы можно формулировать и отправлять через HTTP с помощью языка написания скрипта по вашему выбору.

Попробуйте использовать Administrator Directory для выполнения задачи администрирования. Обратите внимание на параметры, которые вам необходимо ввести, и изучите URL-адрес в строке вашего браузера после выполнения запроса к серверу. Для просмотра полного тела запроса и откликов можно использовать такие инструменты веб-разработчика, как Fiddler или Firebug. Эта информация очень ценна для создания собственных запросов администрирования HTTP с использованием языка Python или других языков написания скриптов.

Несмотря на то, что вы можете использовать Administrator Directory в интерактивном режиме для выполнения задач администрирования, данное веб-приложение лучше всего использовать как обучающий инструмент при ознакомлении с ArcGIS REST API. Администрирование ArcGIS Server будет выполняться в веб-приложении ArcGIS Server Manager.

Получение и использование маркера в скриптах

При входе в Менеджер (Manager) или Administrator Directory вам необходимо ввести имя пользователя и пароль учетной записи, которой предоставлены права доступа администратора или издателя для ArcGIS Server. Аналогичный принцип используется и при написании скриптов. Вам требуется программно передать имя пользователя и пароль на сервер. Сервер выполнит возврат маркера, который представляет собой специальную строковую последовательность символов, подтверждающего аутентификацию сервера для выполнения некоторых типов действий. Вы должны включать данный маркер в любой запрос веб-сервера, который вы выполняете к серверу.

Маркер (токен) не является постоянным; он создан со сроком действия, что исключает возможность его кражи и необоснованного использования пользователем-злоумышленником. При каждом запуске скрипта вам необходимо выполнять запрос нового маркера (но не при каждом запросе).

Следующая функция Python выполняет запрос маркера. В качестве аргументов используется имя сервера, номер порта, имя пользователя и пароль.

Запрос маркера администрирования у ArcGIS Server.

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']

Работа с запросами и откликами

Для выполнения запроса веб-сервиса ArcGIS Server необходимо сформулировать URL для действия, которое вы желаете выполнить, а также необходимые для этого действия параметры. Одним из требуемых параметров безопасного сервера является маркер – такой же, как созданный выше.

Все действия администрирования приводят к отклику веб-сервиса, который обычно запрашивается в формате JavaScript Object Notation (JSON). Языки написания скриптов, например, Python, имеют библиотеки, которые могут анализировать или считывать отклик JSON. Иногда для того, чтобы оценить успешность вашего запроса, вам требуется просто получить код статуса HTTP (например, код 200 соответствует статусу "OK"). Иногда в ответе могут содержаться такие данные, как записи журнала, которые вы будете разбирать и изучать позднее.

Примеры шифров, которые приведены в этой справке, позволят лучше понять, как, используя программные методы, можно выполнять запросы к ArcGIS Server и обработавать получаемые ответы.