ArcGIS Enterprise можно полностью администрировать посредством запросов к ArcGIS REST API. Даже когда вы выполняете административные задачи через свой сервер или портал, вызовы API выполняются на серверной части. Для написания скриптов администрирования ArcGIS Enterprise вам потребуется выбрать язык скрипта, который позволит вам создать URL-адреса и запросы HTTP, а также анализировать отклики HTTP. В примерах, приведенных в настоящей справке, используется Python.
Для использования API не требуется программное обеспечение Esri на компьютере, с которого вы запускаете скрипт. Вам требуется только среда, которая позволит вам выполнять запросы HTTP к вашему порталу.
Начало работы
Для использования ArcGIS REST API необходимо создать запрос HTTP на операцию, которую вы желаете выполнить, и включить в него необходимые для ее выполнения параметры. Вы можете ознакомиться с административными операциями и их требуемыми параметрами, просмотрев ряд директорий, которые позволяют вам взаимодействовать с различными ArcGIS REST API. Различные ArcGIS Enterprise REST API доступны через два портала и два каталога сервера.
Использование различных ArcGIS REST API
Директории портала и сервера предоставляют интерактивные представления ресурсов ArcGIS REST API для вашей организации. Использование этих директорий может помочь вам понять, как писать скрипты администрирования для вашей организации.
URL-адреса директорий портала форматируются следующим образом:
- Portal Directory—https://webadaptorhost.domain.com/webadaptorname/sharing/rest
- Portal Administrator Directory—https://webadaptorhost.domain.com/webadaptorname/portaladmin
URL-адреса директорий сервера форматируются следующим образом:
- Services Directory— https://gisserver.domain.com:6443/arcgis/rest/services
- Server Administrator Directory— https://gisserver.domain.com:6443/arcgis/admin
Чтобы ознакомиться с ArcGIS REST API, используйте одну из директорий для выполнения административной задачи. Обратите внимание на параметры, которые вам необходимо ввести, и изучите URL-адрес в строке вашего браузера после выполнения запроса к серверу. Для просмотра полного тела запроса и откликов можно использовать такие инструменты веб-разработчика, как Fiddler или Firebug. Эта информация очень ценна для создания собственных запросов администрирования HTTP с использованием языка Python или других языков написания скриптов.
Генерирование и использование токена в скриптах
При администрировании вашей организации через портал, сервер или их соответствующие директории вам необходимо предоставить имя пользователя и пароль учетной записи с соответствующими правами доступа. Аналогичный принцип используется и при написании скриптов. Но вы должны понимать, как происходит аутентификация при использовании скриптов для администрирования вашей организации.
Если ваша организация настроена на работу со встроенными учетными записями и аутентификацией по токенам, вы можете применять для своих сценариев те же учетные записи администратора и URL-адреса, которые будете использовать с директориями портала и сервера. Если в вашей организации настроены логины для конкретной организации и проверка подлинности на веб-уровне, рекомендуется, чтобы ваши сценарии обходили веб-адаптер. Используйте первоначальную учетную запись администратора, созданную после установки Portal for ArcGIS, для доступа к порталу или учетную запись основного администратора сайта, созданную после установки ArcGIS Server, для доступа к серверу.
В любом случае вам возвращается токен, представляющий собой специальную строку символов, которая сообщает порталу или серверу, что вы прошли аутентификацию для выполнения определенных типов действий. Вы должны включать этот токен в любые запросы веб-сервисы, которые вы делаете.
Следующая функция Python выполняет запрос токена портала. В качестве аргументов используется URL-адрес портала, имя пользователя и пароль.
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)
Следующая функция Python выполняет запрос токена сервера. В качестве аргументов используется URL-адрес сервера, имя пользователя и пароль.
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)
Токен не является постоянным; он создан со сроком действия, что исключает возможность его кражи и необоснованного использования пользователем-злоумышленником. Обычно при каждом запуске скрипта необходимо выполнять запрос нового токена (но не при каждом запросе). В исключительных случаях срок действия токена может заканчиваться до завершения работы скрипта. Если в запросе указан токен с законченным сроком действия, ответ сервера будет содержать ошибку с указанием, что срок действия токена истек. Если это произойдет, обновите свой токен и продолжите выполнение своего скрипта.
Работа с запросами и откликами
Для выполнения запроса веб-сервиса, вам потребуется сформулировать URL для требуемого вам действия и необходимые для этого параметры. Одним из требуемых параметров является токен – такой же, как созданный выше.
Все действия администрирования приводят к отклику веб-сервиса, который обычно запрашивается в формате JavaScript Object Notation (JSON). Языки написания скриптов, например Python, имеют библиотеки, которые могут анализировать или считывать отклик JSON. Иногда для того, чтобы оценить успешность вашего запроса, вам требуется просто получить код статуса HTTP (например, код 200 соответствует статусу OK). Иногда в ответе могут содержаться такие данные, как записи журнала, которые вы будете разбирать и изучать позднее.