apicのrest api入門

25
シスコシステムズ合同会社 APICのREST API入門 2016/09/14 横石雄大 ([email protected]) システムズエンジニア SDN応用技術室

Upload: takehiro-yokoishi

Post on 14-Jan-2017

354 views

Category:

Engineering


3 download

TRANSCRIPT

Page 1: APICのREST API入門

シスコシステムズ合同会社

APICのREST API入門

2016/09/14

横石雄大 ([email protected])

システムズエンジニア

SDN応用技術室

Page 2: APICのREST API入門

• API / REST APIとは?

• ACIのモデル構造

• デモプログラム

• デモプログラムの解説

おしながき

Page 3: APICのREST API入門

• 横石 雄大 (よこいし たけひろ)

• 2回目の登壇

• 8月以降も部署異動無しで、淡々とSDNやってます。

• 学生時代

• ネットワーク・サービス運用 (研究室やバイト先などで)

• ウェブアプリケーション開発 (得意な言語はRuby)

• 趣味

• 食べること。(ブログもやってます。 https://www.dokalog.net/ )

とりあえず自己紹介

Page 4: APICのREST API入門

• Application Programing Interface

• ソフトウェアコンポーネントが互いにやりとりするのに使用するインタフェースの仕様である。 (Wikipedia)

• 他のプログラムから制御してもらうときに使ってもらう入り口

API??

Page 5: APICのREST API入門

• 意図する使い方をしてほしい。

• 直接DBを操作されたくない。

• オブジェクト間の連携等があるので、適切に処理したい。

• 自分のサービスの利用者が増やしたい。

• 別のソフトの作成者は、手間のかかるところを他に任せることが可能(ユーザ認証など)

APIを公開する理由

自作のソフト

ツイート

DM

フォロー

API

ユーザ

Page 6: APICのREST API入門

• コメント) 大丈夫だけど、手間やデータ量が余分にかかってしまいます。

• 例) ユーザAの最新のツイートが見たい。

普通にAPI使わずに、やるのじゃだめなの???

自作のソフト

Web In

terfa

ce

HTMLファイル

HTTP アクセス

HTML ヘッダー

HTML 本体

見た目を調整(CSS)

動きなど(JS)

その他の情報(meta)

ツイート本体

サイドメニュー

ページヘッダー

Page 7: APICのREST API入門

SOAP REST

自作のソフト

サーバー

SOAP-Request(XML)

SOAP-Response(XML)

HTTP / STMPなど 自作のソフト

サーバー

HTTP Response(XML, JSONなど)

HTTP Request(不要な場合も)

HTTP• リソースはアクセスするURL• 操作をHTTP Method

標準で定義

各サービスで定義

どのリソースどのような操作

Page 8: APICのREST API入門

• リソースの場所は、URLのHTTP Pathで表現

• https://サーバー/なんとか/かんとか

• リソースの操作は、HTTP Methodで識別

• 新規作成(Create): POST

• リソースの情報取得(Read): GET

• 更新(Update): PUT

• リソース削除(Delete): DELETE

• 操作に対する応答は、HTTP Status Codeを利用

• 成功時: 2xx

• クライアント側のエラー: 4xx

REST の原則

一部だけ実装されている事もある 全部原則に基づいて

実装されているものを区別して“RESTful” と表現する事もある。

“新規作成”と”更新”は、HTTP Methodで一致するものがないため、解釈の違いが生まれる事が多い。

Page 9: APICのREST API入門

APICのAPI

Page 10: APICのREST API入門

• アクセスパスは2通り

• (http | https)://host [:port] /api/mo/dn.(json | xml)

• オブジェクト一つ一つにアクセスするときに利用

• dn: distinguished name -> ユニークな名前

• (http | https)://host [:port] /api/class/className.(json | xml)

• クラスごとに列挙するときに利用

• 注意: クラス名は、”:”を抜く。

• 例) テナントクラス fv:Tenant -> fvTenant

• オブジェクトを作成するときには、上位オブジェクトにHTTP POST

APICのAPIの基本

Page 11: APICのREST API入門

アクセスパスによる構造の違い

class

fv:Tenant

テナント1 テナント2

fv:Ctx

VRF1

fv:BD

BD1

mo

uni

テナント1

VRF1 BD1

テナント2

クラスでのアクセス(/api/class/xxxx)

オブジェクトでのアクセス(/api/mo/xxxx)

Page 12: APICのREST API入門

クラス / DNの確認方法 (Debug Info)

ユーザー名を選びShow Debug Info

画面左下に閲覧中のオブジェクトのクラスとDNが表示

Page 13: APICのREST API入門

MOの確認 (Object Store Browser)

ユーザー名を選び“Object Store Browser”

クラス名やDNで検索存在するmoを列挙可能

Objectの親や子供を見る事が可能

Page 14: APICのREST API入門

• ブラウザの機能で通信の中身を確認

実際の通信の確認 (デベロッパーツールなど)

• URL• Method• Status Codeなど

APIから返るデータを見やすく確認

HTTPのヘッダーChromeのデベロッパーツールを利用

Page 15: APICのREST API入門

ACI REST デモ

Page 16: APICのREST API入門

• ACI独自の用語を理解する必要がある。

• 汎用性を高くするために抽象化されている。

ACIのネットワークは今までのネットワークと異なるTenant

VRFBridge Domain

Application Profile

EPGContract

EPG

Page 17: APICのREST API入門

• 仮想ネットワーク名

• セグメント名

• デフォルトゲートウェイのアドレス

• ポート番号

• vlan番号

通常、ネットワークに必要な情報demo-tenant

client (192.168.0.0/24)

server (192.168.1.0/24)

demo_client192.168.0.1

demo_server192.168.1.1

.254 .254

Leaf1 Leaf2eth1/13vlan 10

eth1/13vlan 10

全て許可

Page 18: APICのREST API入門

demo-tenant

demo-network

client server

permit-all

VRF

client-seg (192.168.0.0/24)

server-seg (192.168.1.0/24)

demo_client192.168.0.1

demo_server192.168.1.1

.254 .254

通常のネットワークとACIのマッピング

demo-tenant

client (192.168.0.0/24)

server (192.168.1.0/24)

demo_client192.168.0.1

demo_server192.168.1.1

.254 .254

Leaf1 Leaf2eth1/13vlan 10

eth1/13vlan 10

全て許可

通常の仮想ネットワーク ACIのテナント

Page 19: APICのREST API入門

通常のネットワークとACIのマッピング

通常のネットワーク ACI

仮想ネットワーク名 テナント名

ゲートウェイアドレスBridge Domain

セグメント名EPG

ポート番号Static Bindings (Paths)

vlan 番号

ACL Contract

Page 20: APICのREST API入門

ライブデモ

Page 21: APICのREST API入門

REST API デモプログラムの大まかな流れ

テナント作成プログラム

(Ruby)フォーム内容送信プログラム

(JavaScript)

HTTP(GET / POST)

HTTP(GET / POST)

独自フォーマットJSON ACIに準拠したJSON

Page 22: APICのREST API入門

REST API デモプログラム フローチャート

ウェブブラウザ アプリケーションサーバ APIC

インターフェイス一覧取得(HTTP GET) スイッチ一覧取得

インターフェイス一覧取得(スイッチごと)インターフェイス一覧取得

(結果)

テナント作成(HTTP POST)

テナント作成(実行結果)

テナント作成

ネットワーク作成(VRF, BD)

AP関連作成(AP, EPG, Contract)

ユーザ入力

Page 23: APICのREST API入門

• REST APIとは?

• APICのREST API

• 実際に作ったもののご紹介• (webページに小細工はいっぱい隠してあるので、気になった人は懇親会で聞いてください)

まとめ

Page 24: APICのREST API入門

• Cisco APIC REST API User Guide• http://www.cisco.com/c/en/us/td/docs/switches/datacenter/aci/apic/sw/1-

x/api/rest/b_APIC_RESTful_API_User_Guide/b_IFC_RESTful_API_User_Guide_chapter_010.html

• APIC Management Information Model Reference• https://developer.cisco.com/media/mim-ref/

• Architectural Styles and the Design of Network-based Software Architectures (Chapter 5)• http://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm

• 一番最初にRESTの考えを述べた論文

参照URL

Page 25: APICのREST API入門