ArcGIS REST API を使用したスクリプトの作成
ArcGIS Server は、ArcGIS REST API への Web サービス リクエストを通して管理することができます。(ArcGIS Server Manager を使用してサーバを管理する場合でも、REST API の呼び出しはバック エンドで行われます)。ArcGIS Server を管理するスクリプトを記述するには、URL の構築、HTTP リクエストの送信、HTTP 応答の解析を行うことができるスクリプト言語を選択する必要があります。(このヘルプ システムのコード例は Python を使用しています)。
ArcGIS REST API を使用するために、スクリプトを実行するコンピュータに Esri ソフトウェアをインストールする必要はないことに注意してください。必要となるのは、GIS サーバに 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 Server Administrator Directory を使用することです。
Administrator Directory の使用
ArcGIS Server Administrator Directory は、ArcGIS Server 用の管理スクリプトを記述するときに役立つ Web アプリケーションです。通常、ArcGIS Server Administrator Directory は、http://gisserver.domain.com:6080/arcgis/admin で使用できます。
Administrator Directory は REST API を通して公開される ArcGIS Server リソースへのロード マップと考えてください。Administrator Directory のリンクに従って移動し、管理 Web サービス リクエストで使用される URL やパラメータを学習できます。次に、任意のスクリプト言語を使用してこれらのリクエストを作成し、HTTP 経由で送信することができます。
Administrator Directory を使用して、管理タスクを実行してみることをお勧めします。サーバにリクエストを送信する際は、入力する必要があるパラメータに注意し、ブラウザのアドレス バーで URL を確認してください。リクエストの全文や応答を確認するには、Fiddler や Firebug などの Web 開発者ツールが役に立ちます。Python や別のスクリプト言語を使用してユーザ独自の管理 HTTP リクエストを構築するときは、この情報は非常に価値があります。
ArcGIS Server Administrator Directory を対話的に使用して管理タスクを実際に実行することもできますが、この Web アプリケーションは REST API を熟知するために役立つ学習ツールとして最適です。ArcGIS for Server の管理に最適な Web アプリケーションは ArcGIS Server Manager です。
スクリプトでのトークンの使用
ArcGIS Server Manager または ArcGIS Server Administrator Directory にログインするときは、ArcGIS Server に対する管理権限または公開者権限を持つアカウントのユーザ名とパスワードを入力する必要があります。スクリプトを記述する場合も同じ概念が適用されます。プログラムにより名前とパスワードをサーバに送信する必要があります。サーバはトークンを返します。トークンはユーザが特定のタイプのアクションの実行を認証されていることをサーバに証明する特殊な文字列です。サーバに送信する Web サービス リクエストにこのトークンを含める必要があります。
トークンは無期限に有効ではなく、タイム アウトするように設計されています。したがって、悪意のあるユーザにより盗まれて無期限に使用されることはありません。スクリプトを実行するたびに(リクエストを送信するたびにではなく)、新しいトークンをリクエストする必要があります。
次の Python 関数はトークンをリクエストします。引数として、サーバ名、ポート番号、ユーザ名、およびパスワードを指定します。
ArcGIS 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 Server の Web サービス リクエストを送信するには、実行するアクションの URL とそのアクションに必要なパラメータを作成する必要があります。セキュリティで保護されたサーバで必要なパラメータの 1 つは、上記のように生成されたトークンです。
すべての管理アクションでは Web サービス応答が生成されます。通常、これは JavaScript Object Notation(JSON)形式でリクエストされます。Python などのスクリプト言語には、JSON 応答を解析または読み取ることができるライブラリがあります。リクエストが正常に処理されたかどうかを確認するために、単に HTTP ステータス コードを取得したい場合があります(たとえば、コード 200 は OK を意味します)。また、応答には、さらに解析と検証を行う必要があると思わせるログ メッセージなどのデータが含まれる場合もあります。
リクエストを ArcGIS Server にプログラムで送信し、応答を操作する方法を理解するには、このヘルプ ブックのさまざまなコード例をご参照ください。