・REST(REpresentational State Transfer) APIは、RESTの原則に従って設計されたAPI(アプリケーションプログラムインターフェース)です。
・HTTPを使ってネットワーク機器やサーバなどと連携する。
・各機器がRESTに対応している必要がある。(たとえば、FortiGateもOSの4.0台は未対応だったはず)
・制御する端末から各機器にHTTPでアクセスする。各機器はRESTに対応していると、要求に対する回答(ほしい情報など)を返す。
・例えば、FortiGateでも6.0台のOSであればREST APIに対応しています。
詳しくは確認しますが、http://192.168.1.99/xx/xx/xx などと、決められた
URLにアクセスすると、欲しい情報が取得できる。まあ、便利ですよね。
・GUIと同じじゃないかって?
 たしかにGUIはHTTPベースです。でも、自動処理をさせて定期的に情報を取得したり、 一括でコマンドを実行するときに、GUIでボタンを押したりするのはできない。
 HTTPベースで、curlコマンドなどを使って(curlはLinuxでもWindowsでも使える)
 curl -X GET http://192.168.1.99/xx/xx/xx などとすればConfigだったり
 ホスト名だったりログだったりを取得できる。→wgetでもできるが、curlのほうがいろいろできる。
 -X PUT として設定を書き換えることもできる。このとき、いろいろな引数を渡して、hostnameを変更したり、
 各種設定を変えられる。GUIだと、ボタンをクリックしたりする必要があり、コマンドでは無理だよね。
 
 さらに、REST APIの場合、その出力形式がJSON(Java Script Object Notation)やXMLである。テキストだと、2次元の表というかDBみたいな情報を取得するのが難しい。でも、JSONはpythonの辞書型に近く、 表というかDBの情報の形式で保持されるので、そのあとにpythonなどで処理するにも楽である。
・CLIもあるよねって?
 たしかに。でも、SSHなどでログインして、応答が返ってきて、返ってきたら パスワードを入力して、などと、処理がちょっと複雑だよね。
 REST APIの場合は、PUTで認証をできる。認証が成功されると認証トークンが発行される。
 また、セッション(IPアドレス情報など)をRESTのサーバ側で管理している。行って返ってきてという対話型の処理は不要だね。
 つまり、認証から処理の実行までをスクリプト化して一連の処理ができる。うまく使えば便利だね。 


・Pythonで使う場合は、requestsモジュールをimportして利用できる