Написание скриптов с использованием ArcGIS REST API
ArcGIS for Server можно полностью администрировать с использованием запросов веб-сервиса RESTful, отправляемых в ArcGIS REST API. (Даже когда вы используете ArcGIS Server Manager для администрирования вашего сервера, запросы к REST API выполняются на серверной части.) Для написания скриптов администрирования ArcGIS for Server вам потребуется выбрать язык скрипта, который позволит вам создать URL-адреса и запросы HTTP, а также анализировать отклики HTTP. В примерах, приведенных в настоящей справке, используется язык Python.
Важно отметить, что использование ArcGIS REST API не требует наличия программного обеспечения Esri на компьютере, с которого выполняется скрипт. Вам требуется только среда, которая позволяет вам выполнять запросы HTTP к вашему серверу ГИС.
Начало администрирования сервера с использованием ArcGIS REST API
Для использования REST API необходимо создать запрос HTTP на операцию, которую вы желаете выполнить, и включить в него необходимые для ее выполнения параметры. Например, следующий запрос HTTP подключает новый компьютер к вашему сайту:
http://gisserver.domain.com:6080/arcgis/admin/machines/registermachineName=GISSERVER1.DOMAIN.COMadminURL=http://GISSERVER1.DOMAIN.COM:6080/arcgis/admin
Простым способом ознакомиться с доступными операциями администрирования и их параметрами является использование ArcGIS for Server Administrator Directory.
Использование Administrator Directory
ArcGIS for Server Administrator Directory представляет собой веб-приложение, с помощью которого можно создавать скрипты для администрирования ArcGIS for Server. Administrator Directory обычно доступна по адресу http://gisserver.domain.com:6080/arcgis/admin.
Administrator Directory представляет собой своего рода путеводитель по ресурсам ArcGIS for Server, доступ к которым предоставляет REST API. Навигация по ссылкам в Administrator Directory позволяет ознакомиться с URL и параметрами для использования в запросах к вашему веб-сервису администрирования. Эти запросы можно формулировать и отправлять через HTTP с помощью языка написания скрипта по вашему выбору.
Попробуйте использовать Administrator Directory для выполнения задачи администрирования. Обратите внимание на параметры, которые вам необходимо ввести, и изучите URL-адрес в строке вашего браузера после выполнения запроса к серверу. Для просмотра полного тела запроса и откликов можно использовать такие инструменты веб-разработчика, как Fiddler или Firebug. Эта информация очень ценна при попытке создания собственных запросов администрирования HTTP с использованием языка Python или других языков написания скриптов.
Несмотря на то, что вы можете использовать Administrator Directory в интерактивном режиме для фактического выполнения задач администрирования, данное веб-приложение лучше всего использовать как инструмент изучения REST API. Целевым веб-приложением для администрирования ArcGIS for Server является ArcGIS Server Manager.
Получение и использование маркера в скриптах
При входе в Менеджер (Manager) или Administrator Directory вам необходимо ввести имя пользователя и пароль для учетной записи, которая имеет права доступа администратора или издателя для ArcGIS for Server. Аналогичный принцип используется и при написании скриптов. Вам требуется программно передать имя пользователя и пароль на сервер. Сервер выполнит возврат маркера, который представляет собой специальную строковую последовательность символов, подтверждающего аутентификацию сервера для выполнения некоторых типов действий. Вы должны включать данный маркер в любой запрос веб-сервера, который вы выполняете к серверу.
Маркер (токен) не является постоянным; он создан со сроком действия, что исключает возможность его кражи и необоснованного использования пользователем-злоумышленником. При каждом запуске скрипта вам необходимо выполнять запрос нового маркера (но не при каждом запросе).
Следующая функция Python выполняет запрос маркера. В качестве аргументов используется имя сервера, номер порта, имя пользователя и пароль.
Выполняет запрос маркера администрирования у ArcGIS for 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 for Server вам потребуется сформулировать URL для необходимого действия, а также всех необходимых для этого параметров. Одним из требуемых параметров безопасного сервера является соответствие маркера такому же маркеру, созданному выше.
Все действия администрирования приводят к отклику веб-сервиса, который обычно запрашивается в формате JavaScript Object Notation (JSON). Языки написания скриптов, например, Python, имеют библиотеки, которые могут анализировать или считывать отклик JSON. Иногда для того, чтобы оценить успешность вашего запроса, вам требуется просто получить код статуса HTTP (например, код 200 соответствует статусу "OK"). Иногда такие отклики могут иметь данные, например, сообщения журнала, которые в будущем вам потребуется проанализировать и изучить.
См. различные варианты кода, приведенные в данном справочнике, для того, чтобы понять, как выполнить программный запрос к ArcGIS for Server и обработать отклик.