Skip To Content

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

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

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

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

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

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

ArcGIS Portal Directory доступна через два веб-приложения и может помочь вам в написании скриптов для задач администрирования портала. ArcGIS Portal Directory в целом соответствует ArcGIS Server Administrator Directory и Services Directory. Доступные задачи варьируют между приложениями, как описано в О Директории портала ArcGIS (About the ArcGIS Portal Directory). URL-адреса в приложениях имеют следующий формат:

  • https://webadaptorhost.domain.com/webadaptorname/portaladmin
  • https://webadaptorhost.domain.com/webadaptorname/sharing/rest

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

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

Несмотря на то, что вы можете использовать ArcGIS Portal Directory в интерактивном режиме для фактического выполнения задач администрирования, его лучше всего использовать как инструмент изучения REST API. Целевым веб-приложением для администрирования портала является веб-сайт Portal for ArcGIS.

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

При администрировании портала через веб-сайт или ArcGIS Portal Directory, вам необходимо ввести имя пользователя и пароль для учетной записи, которая имеет соответствующие права доступа на портале. Аналогичный принцип используется и при написании скриптов.

Однако, в отличие от доступа к веб-сайту портала или к ArcGIS Portal Directory, когда браузер прозрачно обрабатывает процесс аутентификации, следует понимать, как именно работает аутентификация при использовании скриптов для администрирования портала.

Если портал настроен на работу со встроенными учетными записями и аутентификацию с токеном, вы сможете использовать скрипты с теми же административными учетными записями и URL-адресами, что и в ArcGIS Portal Directory. Если портал настроен на работу с корпоративными учетными записями и аутентификацию на веб-уровне, рекомендуется, чтобы скрипты работали в обход Web Adaptor и использовали первичную учетную запись администратора, созданную после установки Portal for ArcGIS.

В любом случае портал вернет вам токен, который представляет собой специальную строку символов, сообщающую порталу, что вы имеете права для выполнения действий определенных типов. Вы должны включать данный токен в любой запрос веб-сервиса, который вы выполняете на портале.

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

def generateToken(username, password, portalUrl):
    '''Retrieves a token to be used with API requests.'''
    parameters = urllib.urlencode({'username' : username,
                                   'password' : password,
                                   'client' : 'referer',
                                   'referer': portalUrl,
                                   'expiration': 60,
                                   'f' : 'json'})
    response = urllib.urlopen(portalUrl + '/sharing/rest/generateToken?',
                              parameters).read()
    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, e:
        print 'An unspecified error occurred.'
        print e

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

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

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

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

См. различные примеры кода в данном справочнике, которые помогают лучше понять, как можно программными средствами выполнить запрос к Portal for ArcGIS и обработать отклик.