Url сервиса: Пример: Обновление URL-адреса вашего сервиса в веб-карте.—Portal for ArcGIS

Пример: Обновление URL-адреса вашего сервиса в веб-карте.—Portal for ArcGIS

Наверх

В этом примере обновляется URL-адрес сервиса, на который ссылается веб-карта. Это удобно, если URL сервиса изменился, и вы не хотите, чтобы пользователи удаляли и повторного добавляли сервис во всех веб-картах. Существует множество причин, по которым URL сервиса может измениться. Например, сервис может быть перемещен на новый сервер, может измениться название сервиса, или сервис может оказаться перемещенным в другую папку на сервере или может измениться префикс домена сервера.

При запуске скрипта вам потребуется указать следующую информацию:

  • URL-адрес для доступа к Portal for ArcGIS. Это может быть URL-адрес ArcGIS Web Adaptor, например, https://webadaptorhost.domain.com/webadaptorname, или URL-адрес компьютера с порталом, например, https://portal.domain.com:7443/arcgis. В URL-адресе необходимо указать полное доменное имя компьютера.
  • Имя пользователя и пароль для учетной записи, которая имеет права администратора портала.
  • Тип элементов, который будет обновлен. Укажите «Веб-карта», чтобы обновить все веб-карты портала.
  • URL-адрес сервиса, на который ссылаются веб-карты, например, http://webadaptorhost.domain.com/webadaptorname/rest/services/folderA/ServiceAreas/MapServer.
  • Новый URL-адрес сервиса, который будет использоваться в веб-картах, например, http://webadaptorhost.domain.com/webadaptorname/rest/services/folderB/ServiceAreas/MapServer.

В следующем примере URL-адрес картографического сервиса http://webadaptorhost.domain.com/webadaptorname/rest/services/folderA/ServiceAreas/MapServer заменяется на URL-адрес http://webadaptorhost.domain.com/webadaptorname/rest/services/folderB/ServiceAreas/MapServer во всех веб-картах портала:

python updateWebmapServices.py https://webadaptorhost.domain.com/webadaptorname admin pass.word "type: Web Map" http://webadaptorhost.domain.com/webadaptorname/rest/services/folderA/ServiceAreas/MapServer http://webadaptorhost. domain.com/webadaptorname/rest/services/folderB/ServiceAreas/MapServer
#!/usr/bin/env python
# Requires Python 2.7+
# Sample Usage:
# python updateWebmapServices.py <sourcePortal> <sourceAdmin> <sourcePassword>
#                                <query> <oldUrl> <newUrl>
import urllib
import json
import argparse
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
def searchPortal(portalUrl, query=None, totalResults=None, sortField='numviews',
                 sortOrder='desc', token=None):
    '''
    Search the portal using the specified query and search parameters.
    Optionally provide a token to return results visible to that user.
    '''
    # Default results are returned by highest
    # number of views in descending order.
    allResults = []
    if not totalResults or totalResults > 100:
        numResults = 100
    else:
        numResults = totalResults
    results = __search__(portalUrl, query, numResults, sortField, sortOrder, 0,
                         token)
    if not 'error' in results.keys():
        if not totalResults:
            totalResults = results['total'] # Return all of the results.
        allResults.extend(results['results'])
        while (results['nextStart'] > 0 and
               results['nextStart'] < totalResults):
            # Do some math to ensure it only
            # returns the total results requested. 
            numResults = min(totalResults - results['nextStart'] + 1, 100)
            results = __search__(portalUrl=portalUrl, query=query,
                                 numResults=numResults, sortField=sortField,
                                 sortOrder=sortOrder, token=token,
                                 start=results['nextStart'])
            allResults.extend(results['results'])
        return allResults
    else:
        print results['error']['message']
        return results
def __search__(portalUrl, query=None, numResults=100, sortField='numviews',
               sortOrder='desc', start=0, token=None):
    '''Retrieve a single page of search results.'''
    params = {
        'q': query,
        'num': numResults,
        'sortField': sortField,
        'sortOrder': sortOrder,
        'f': 'json',
        'start': start
    }
    if token:
        # Adding a token provides an authenticated search.
        params['token'] = token
    request = portal + '/sharing/rest/search?' + urllib. urlencode(params)
    results = json.loads(urllib.urlopen(request).read())
    return results
def updateWebmapService(webmapId, oldUrl, newUrl, token, portalUrl):
    '''Replaces the URL for a specified map service in a web map.'''
    try:
        params = urllib.urlencode({'token' : token,
                                   'f' : 'json'})
        print 'Getting Info for: ' + webmapId
        # Get the item data.
        reqUrl = (portalUrl + '/sharing/content/items/' + webmapId +
                  '/data?' + params)
        itemDataReq = urllib.urlopen(reqUrl).read()
        itemString = str(itemDataReq)
        # Find the service URL to be replaced.
        if itemString.find(oldUrl) > -1:
            newString = itemString.replace(oldUrl, newUrl)
            # Get the item's info for the addItem parameters
            itemInfoReq = urllib.urlopen(portalUrl +
                                         '/sharing/content/items/' +
                                         webmapId + '?' + params)
            itemInfo = json. loads(itemInfoReq.read(),
                                  object_hook=__decodeDict__)
            print 'Updating ' + itemInfo['title']
            # Post back the changes overwriting the old map
            if(itemInfo['ownerFolder'] is not None):
                modRequest = urllib.urlopen(portalUrl +
                                        '/sharing/content/users/' +
                                        itemInfo['owner'] +
                                        '/' + itemInfo['ownerFolder'] +
                                        '/items/' + webmapId +
                                        '/update?' + params ,
                                        urllib.urlencode(
                                            {'text' : newString}
                                        ))
            else:
                modRequest = urllib.urlopen(portalUrl +
                                        '/sharing/content/users/' +
                                        itemInfo['owner'] +
                                        '/items/' + webmapId +
                                        '/update?' + params ,
                                        urllib. urlencode(
                                            {'text' : newString}
                                        ))
            # Evaluate the results to make sure it happened
            modResponse = json.loads(modRequest.read())
            if modResponse.has_key('error'):
                raise AGOPostError(webmapId, modResponse['error']['message'])
            else:
                print 'Successfully updated the urls'
        else:
            print 'Didn\'t find any services with ' + oldUrl
    except ValueError as e:
        print 'Error - no web map specified'
    except AGOPostError as e:
        print e.webmap
        print 'Error updating web map ' + e.webmap + ': ' + e.msg
# Helper functions for decoding the unicode values in the webmap json.
def __decodeDict__(dct):
    newdict = {}
    for k, v in dct.iteritems():
        k = __safeValue__(k)
        v = __safeValue__(v)
        newdict[k] = v
    return newdict
def __safeValue__(inVal):
    outVal = inVal
    if isinstance(inVal, unicode):
        outVal = inVal. encode('utf-8')
    elif isinstance(inVal, list):
        outVal = __decode_list__(inVal)
    return outVal
def __decode_list__(lst):
    newList = []
    for i in lst:
        i = __safeValue__(i)
        newList.append(i)
    return newList
class AGOPostError(Exception):
    def __init__(self, webmap, msg):
        print 'ok'
        self.webmap = webmap
        self.msg = msg
# Run the script.
if __name__ == '__main__':
    parser = argparse.ArgumentParser()
    parser.add_argument('portal',
                        help=('url of the Portal (e.g. '
                              'https://portal.domain.com:7443/arcgis)'))
    parser.add_argument('username', help='username')
    parser.add_argument('password', help='password')
    parser.add_argument('query', help='search string to find content')
    parser.add_argument('oldUrl', help='the URL to replace')
    parser.add_argument('newUrl', help='the new URL')
    # Read the command line arguments.
    args = parser.parse_args()
    portal = args. portal
    username = args.username
    password = args.password
    query = args.query
    oldUrl = args.oldUrl
    newUrl = args.newUrl
    # Get a token for the source Portal for ArcGIS.
    token = generateToken(username=username, password=password,
                          portalUrl=portal)
    # Get a list of the content matching the query.
    content = searchPortal(portalUrl=portal,
                           query=query,
                           token=token)
    for item in content:
        if item['type'] == 'Web Map':
            updateWebmapService(item['id'], oldUrl, newUrl, token=token,
                                portalUrl=portal)
    print 'Update complete.'

Отзыв по этому разделу?

HTTP-сервисы


В дополнение к автоматическому REST интерфейсу прикладного решения в платформе существует возможность создания собственных произвольных HTTP-сервисов в прикладном решении.


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


По сравнению с имеющимися в платформе SOAP web-сервисами, HTTP-сервисы имеют ряд преимуществ:

  • Простота программирования клиента таких сервисов;
  • Потенциально меньший объем передаваемых данных;
  • Потенциально меньшая вычислительная нагрузка;
  • HTTP-сервисы ориентированы на «ресурсы», в то время как SOAP сервисы ориентированы на «действия».


Первые три фактора особенно важны для приложений, работающих на мобильных устройствах.


Можно использовать HTTP-сервисы как «легкие» RPC-сервисы, не требующие сложной подготовки XML-пакетов. Методы могут идентифицироваться в URL, а параметры могут передаваться в опциях запроса, или в его теле. В последнем случае такие сервисы уже вплотную приближаются как SOAP, проигрывая ему в четкости спецификации, но выигрывая в гибкости.


По своему «конструктивному исполнению» HTTP-сервисы очень напоминают web-сервисы, имеющиеся в платформе. Точно так же есть специальный объект конфигурации HTTP сервис. Такие объекты добавляются в ветку Общие — HTTP-сервисы:


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


Шаблон задаёт путь, по которому может происходить обращение к HTTP-сервису. В шаблоне можно использовать определённый набор символов, в том числе параметризованные сегменты вида {какой-то текст}.


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


При обращении к такому HTTP-сервису платформа сначала попытается сопоставить URL, по которому произошло обращение, с одним из имеющихся шаблонов и методов. Если сопоставить не удалось, то платформа выдаст код ответа 404 Not Found. Если подходящий метод будет найден, то платформа начнёт выполнение его обработчика, передав в него все имеющиеся в запросе данные в виде объекта встроенного языка HТТРСервисЗапрос:


Из этого объекта можно легко получить, например, параметры, содержащиеся в исходном URL, и использовать их для извлечения из базы нужных данных.


Полученные данные можно вернуть в разных форматах. Например, их можно преобразовать в XML, как на картинке выше, или даже просто в текстовую строку с разделителями.


Ответ сервиса формируется специальным объектом встроенного языка HТТРСервисОтвет, в тело которого можно поместить подготовленные данные.


Публикация HTTP-сервисов выполняется аналогично тому, как публикуются web-сервисы. Также аналогичным образом для них работает аутентификация, использование разделения данных и отладка.

Технологии интеграции 1С:Предприятия 8.3


Авторы: Е.Ю. Хрусталева

Класс ServiceURL | Microsoft Узнайте

Твиттер

LinkedIn

Фейсбук

Электронная почта

  • Артикул
Упаковка:
@azure/файл-хранилища

ServiceURL представляет собой URL-адрес файловой службы хранилища Azure, позволяющий
для управления файловыми ресурсами.

Удлинитель

StorageURL

Конструкторы

ServiceURL(string, Pipeline)

Создает экземпляр ServiceURL.

Унаследованные свойства

url

Строковое значение URL.

Методы

получить Свойства (Абортер)

Получает свойства файловой службы учетной записи хранения, включая свойства
для правил Storage Analytics и CORS (Cross-Origin Resource Sharing).

См. https://docs.microsoft.com/en-us/rest/api/storageservices/get-file-service-properties}

список Акции Сегмент (Прерыватель, строка, IService Список Акции Сегмент Опции)

Получает свойства файловой службы учетной записи хранения, включая свойства хранилища
Метрики Analytics и правила CORS (Cross-Origin Resource Sharing).

набор Свойства (Прерыватель, Хранение Служба Свойства)

Задает свойства конечной точки файловой службы учетной записи хранения, включая свойства
для Storage Analytics, правил CORS (Cross-Origin Resource Sharing) и параметров обратимого удаления.

См. https://docs.microsoft.com/en-us/rest/api/storageservices/set-file-service-properties}

с трубопроводом (трубопровод)

Создает новый объект ServiceURL, идентичный исходному, но с
указанный конвейер политики запросов.

Унаследованные методы

новый Pipeline (учетные данные, INew Pipeline Options)

Статический метод, используемый для создания нового объекта Pipeline с предоставленными учетными данными.

Сведения о конструкторе

ServiceURL(строка, конвейер)

Детали унаследованного имущества

URL

Описание метода

получить свойства

(выкидыша)

list

Shares Segment (Aborter, string, IService List Shares Segment Options)

установить свойства

(прерыватель, хранилище , служба , свойства)

с трубопроводом

(трубопроводом)

Детали унаследованного метода

новый конвейер

(учетные данные, параметры INew Pipeline )

Обратная связь

Просмотреть все отзывы о странице

Управляющие услуги | Документация Cloud Run

На этой странице описывается создание службы и просмотр информации о службе.
Сервисы — это основные ресурсы Cloud Run. Каждая услуга уникальна и
постоянный URL-адрес, который не будет меняться со временем при развертывании новых версий.

Постоянный домен службы состоит из имени службы и хэша.

Создание службы

Вы создаете новую службу, развертывая в ней образ контейнера для первого
время. Развертывание нового сервиса
больше инструкций.

Просмотр списка сервисов в вашем проекте

Вы можете просмотреть список доступных сервисов в вашем проекте, используя
Консоль Google Cloud или командная строка gcloud:

Консоль

Для просмотра списка сервисов:

  1. Перейти в Cloud Run

  2. Изучите отображаемый список сервисов для вашего проекта:

Командная строка

Список служб в вашем проекте:

 список запущенных служб gcloud
 

Обратите внимание, что у каждой службы есть связанный URL-адрес.

Этот список можно отфильтровать по свойствам определения службы, таким как
присвоенный ярлык.

Cloud Code

Чтобы просмотреть список услуг с помощью Cloud Code,
прочитать руководства Cloud Run Explorer для IntelliJ
и код Visual Studio.

Копирование услуги

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

Консоль

Чтобы скопировать службу:

  1. Перейти в Cloud Run

  2. Выберите услугу для копирования из отображаемого списка услуг для вашего
    проект:

    1. Нажмите Скопируйте .

    2. На странице копирования службы установите или измените любые значения, которые вы хотите изменить,
      таких как регион и т. д. Если вы сохраняете тот же регион, вы должны указать
      новое название службы.

    3. Нажмите Создайте , чтобы сделать копию и развернуть ее с помощью новой службы
      имя.

YAML

Вы можете загрузить и просмотреть существующие конфигурации службы, используя
Службы запуска gcloud описывают команду --format export , которая дает
очищенные результаты в формате YAML.
Затем вы можете изменить поля, описанные ниже, и
загрузите измененный YAML с помощью команды gcloud run services replace .
Убедитесь, что вы изменяете поля только в соответствии с документацией.

  1. Для просмотра и загрузки конфигурации:

     gcloud run services описывает  SERVICE  --format export > service.yaml 
  2. Внесите необходимые изменения в конфигурацию службы, как описано в
    различные страницы конфигурации.

     версия API: serve. knative.dev/v1
     вид: сервис
     метаданные:
       аннотации:
         ...
       название:  СЛУЖБА 
       ...
     спецификация:
       шаблон:
         метаданные:
           аннотации:
           ...
           имя:  ПЕРЕСМОТР 
     
    • Если вы , а не развертываете копию в другом регионе, замените
      SERVICE с именем, которое вы хотите использовать для копии. Если ты
      развертывая копию в другом регионе, вы можете использовать старое имя.
    • Замените REVISION новым названием версии или удалите его (если он есть). Если вы указываете новое имя версии, оно должно соответствовать следующим критериям:
      • Начинается с СЕРВИС -
      • Содержит только строчные буквы, цифры и -
      • Не заканчивается на -
      • Не превышает 63 символа
  3. Скопируйте службу с помощью следующей команды:

     Службы запуска gcloud заменяют service. yaml 

    Используйте --region
    флаг, чтобы развернуть копию в другом регионе.

Просмотр дополнительных сведений об услуге

Просмотр дополнительных сведений об услуге,

Консоль

Для просмотра сведений об услуге:

  1. Перейти в Cloud Run

  2. Нажмите на нужную услугу в отображаемом списке услуг для вашего
    проект, чтобы открыть представление сведений об услуге.

Командная строка

Чтобы просмотреть сведения о службе:

 сервисы запуска gcloud описывают  СЛУЖБА  

Замените SERVICE именем службы.

Вы можете использовать --format флаг для форматирования
выход. Например, как YAML:

 сервисы запуска gcloud описывают  SERVICE  --format yaml 

Вы можете использовать --format export для экспорта в формате YAML без автоматического
сгенерированные ярлыки или статус:

 сервисы запуска gcloud описывают  SERVICE  --format export 

Вы также можете использовать флаг --format , чтобы получить
URL службы:

 сервисы запуска gcloud описывают  SERVICE  --format='value(status. url)' 

Cloud Code

Чтобы просмотреть сведения об услугах с помощью Cloud Code,
прочитать руководства Cloud Run Explorer для IntelliJ
и код Visual Studio.

Дополнительные сведения о сервисных версиях см.
Управление ревизиями.

Отключение существующей службы

Cloud Run не предлагает прямого способа создания службы
остановить обслуживание трафика, но вы можете добиться аналогичного результата, отозвав разрешение на вызов службы
для удостоверений, которые вызывают службу. Примечательно, что если ваша служба является общедоступной,
удалить allUsers из роли Cloud Run Invoker ( roles/run.invoker ).

Удаление существующих служб

При удалении службы применяются следующие соображения:

  • При удалении службы удаляются все ресурсы, связанные с этой службой, включая все
    версии этой службы независимо от того, обслуживают они трафик или нет.
  • Удаление службы не приводит к автоматическому удалению образов контейнеров из реестра контейнеров.
    Чтобы удалить образы контейнеров, используемые удаленными ревизиями, из Container Registry,
    см. Удаление изображений.
  • Удаление службы с одним или несколькими триггерами Eventarc не выполняется автоматически.
    удалить эти триггеры. Чтобы удалить триггеры, обратитесь к разделу Управление триггерами.
  • После удаления служба остается видимой в консоли Google Cloud и в интерфейсе командной строки
    пока удаление не будет полностью завершено. Однако вы не можете обновить службу.
  • Удаление службы является необратимым: отменить или восстановить нельзя.
    Однако если после удаления службы вы развернете новую службу с тем же
    имя в том же регионе, он будет иметь тот же URL-адрес конечной точки.

Консоль

Чтобы удалить службу:

  1. Перейти в Cloud Run

  2. Найдите службу, которую вы хотите удалить, в списке служб и щелкните
    его флажок, чтобы выбрать его.

    This entry was posted in Популярное