ArcGIS REST API を使用したスクリプトの作成

Portal for ArcGIS は、ArcGIS REST API へのリクエストのみを通じて管理できます。Portal for ArcGIS の Web サイトを使用してポータルを管理する場合でも、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 を 2 つの Web アプリケーションを介して使用し、ポータルの管理スクリプトの記述方法を理解できます。ArcGIS Portal Directory は、概念的には ArcGIS Server Administrator Directory および Services Directory に似ています。使用できるタスクは、「ArcGIS Portal Directory について」に記載されているように、アプリケーションによって異なります。アプリケーションの URL の形式は次のとおりです。

ArcGIS Portal Directory は、REST API を通じて公開される Portal for ArcGIS のリソースのリストと見なすことができます。ArcGIS Portal Directory のリンクに従って移動し、管理 Web サービス リクエストで使用される URL やパラメータを学習できます。次に、任意のスクリプト言語を使用してこれらのリクエストを作成し、HTTP 経由で送信することができます。

ArcGIS Portal Directory を使用して、管理タスクを実行してみることをお勧めします。サーバにリクエストを送信する際は、入力する必要があるパラメータに注意し、ブラウザのアドレス バーで URL を確認してください。リクエストの全文や応答を確認するには、Fiddler や Firebug などの Web 開発者ツールが役に立ちます。Python や別のスクリプト言語を使用してユーザ独自の管理 HTTP リクエストを構築するときは、この情報は非常に価値があります。

ArcGIS Portal Directory を対話的に使用して管理タスクを実際に実行することもできますが、これは REST API を熟知するために役立つ学習ツールとして最適です。ポータルの管理を目的とする Web アプリケーションは、Portal for ArcGIS Web サイトです。

スクリプトでのトークンの使用

Web サイトまたは ArcGIS Portal Directory を介してポータルを管理する場合、そのポータルに対する適切な権限を持つアカウントのユーザ名とパスワードを必ず入力する必要があります。スクリプトを記述する場合も同じ概念が適用されます。

ただし、ブラウザが透過的に認証プロセスを処理するポータル Web サイトや ArcGIS Portal Directory へのアクセスとは異なり、スクリプトを使用してポータルを管理する場合、どのように認証が発生するのかについて理解しておく必要があります。

組み込みアカウントとトークン認証を使用するようにポータルを構成すると、ArcGIS Portal Directory から使用するのと同じ管理アカウントと URL を用いてスクリプトを使用できるようになります。ポータルでエンタープライズ ログインと Web 層認証を構成する場合、スクリプトでは ArcGIS Portal Directory を迂回し、Portal for ArcGIS のインストール後に作成した初期管理者アカウントを使用することをお勧めします。

いずれの場合も、ポータルはトークンを返します。トークンは、特定のタイプのアクションの実行が許可されたポータルと通信するための、特殊な文字列です。ポータルに送信する Web サービス リクエストにこのトークンを含める必要があります。

次の 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

トークンは無期限に有効ではなく、タイム アウトするように設計されています。したがって、悪意のあるユーザにより盗まれて無期限に使用されることはありません。通常は、スクリプトを実行するたびに(リクエストを送信するたびにではなく)、新しいトークンをリクエストする必要があります。例外的に、スクリプトの実行が終了する前に、トークンの有効期限が切れる場合があります。有効期限が切れたトークンがリクエストに含まれている場合、サーバからの応答には、トークンの有効期限が切れていることを示すエラーが含まれます。これが発生した場合、トークンを更新してから、引き続きスクリプトを実行してください。

リクエストと応答の操作

Web サービス リクエストを送信するには、実行するアクションの URL とそのアクションに必要なパラメータを作成する必要があります。セキュリティで保護されたポータルで必要なパラメータの 1 つは、上記のように生成されたトークンです。

すべての管理アクションでは Web サービス応答が生成されます。通常、これは JavaScript Object Notation(JSON)形式でリクエストされます。Python などのスクリプト言語には、JSON 応答を解析または読み取ることができるライブラリがあります。リクエストが正常に処理されたかどうかを確認するために、単に HTTP ステータス コードを取得したい場合があります(たとえば、コード 200 は OK を意味します)。また、応答には、さらに解析と検証を行う必要があると思わせるログ メッセージなどのデータが含まれる場合もあります。

リクエストを Portal for ArcGIS にプログラムで送信し、応答を操作する方法を理解するには、このヘルプ ブックのさまざまなコード例をご参照ください。

5/10/2014