IBM API Connectとは
一言で表すと,企業内で保持するビジネスアセットをAPIとして公開するためのソリューションである。
- IBMは,2015年にStrongLoop社を買収を発表し,2016年2月には買収を完了
- 3月末には,IBM API ManagementとStrongLoop(ゲートウェイやLoopBackなど)と統合し,IBM API Connectというソリューションとなる
- StrongLoop機能の追加によって,「APIを管理する,保護する」に加えて,「APIを作る」部分も兼ね備えるようになった
API公開のメリットや,そのためにクリアすべき前提条件については,他の方の投稿に頼らせて頂くことにし,本稿では「APIを作る」ことにフォーカスした超入門を紹介する。
API Connectでやれること (ざっくり抜粋)
- APIを作る
- loopbackフレームワークを使ったREST API作成 (Swagger)
- CLI (apicコマンド + loopbackで作成)
- GUI (API Designerで作成)
- loopbackフレームワークを使ったREST API作成 (Swagger)
- APIを実行する
- Node.jsやJavaランタイム上でAPIアプリを実行
- Node.jsやJavaランタイム自体の運用管理
- 作ったAPIを任意の環境にデプロイ (Bluemix上も選択可)
- APIを管理する
- API利用におけるポリシー定義
- 利用状況の取得・分析
- API提供者側の管理ポータル
- API利用者側のための開発者ポータル
- APIを保護する
- 認証・認可
- OAuth
環境
- Mac OS X El Capitan v10.11.3
- Xcode v7.2.1
- Node.js v4.2.2
- npm
v2.14.7v3.8.5
Node.jsのバージョン管理は,nodebrewを使っている。
そちらに関しては別記事にて。(MacでNode.jsのバージョン管理)
API ConnectでAPIを作ってみる
1. apiconnectモジュールのインストール
$ npm install -g apiconnect
2. loopbackフレームワークでひな形REST APIアプリの生成
apicコマンドで,インタラクティブにひな形アプリを作成できる。デフォルトのままの場合は,EnterでOK
$ apic loopback <任意のアプリ名> // apiconnect v2系から使用不可
$ apic loopback // 変更後
(2016/06/07追記)
※コマンド実行時にアプリ名を入れるのはNGになった模様
※この他の微妙な変更箇所は,差分まとめ記事(6/5)を参照
- 任意のアプリ名 :
capsmaltApp
(デフォルト) - アプリタイプ :
サンプル(hello-world)を含む形式
(デフォルト)
ひな形に含まれるpackage.jsonの中身に従って,npm installで依存するNodeモジュールが自動ダウンロードされる (完了まで十数秒待つ)
下記の画面まで進めば,ひな形アプリは完成。
次のステップとしてガイドが表示される。
3. Modelを作成
上図のガイドに従って,以下のように入力
$ cd capsmaltApp
$ apic create --type model
Model作成もインタラクティブに行えるので,必要な情報を入力する
- モデル名: Cat
- データソース: db (memory)
- モデルの基本クラス: PersistedModel
- REST API: Yes
- Custom plural: ブランクのままEnter
- Common or server only: server
- 1つめのプロパティーを設定 (猫種の名前)
- プロパティ名: name
- データ型: string
- 必須か否か: No
- デフォルト値: (blank)
4. API ConnectのGUI画面で確認 (API Designer)
API Designerを起動
$ apic edit
自動でブラウザが立ち上がる (http://127.0.0.1:9000)
「製品・API・モデル・データソース」の「API」のページが開く
図の中央あたりに,
capsmaltApp 1.0.0 という先ほど作成したAPIが確認できる
「モデル」を開くと,先ほど作成したモデルのCatが確認できる (noteはデフォルトで作成されている)
5.「実行」でLoopBackアプリケーションを始動 (API Designer)
右側にある「実行」を選択し,その後「始動」を選択する
下図のように,ローカル環境でAPIのランタイムが始動する
==> **「実行」**では,APIアプリの始動・停止が行える
ちなみに,コマンドで始動・停止する場合は,以下のようにする
$ apic start // コマンドを実行したプロジェクト内のMicroGatewayとアプリケーションを始動する
$ apic stop // コマンドを実行したプロジェクト内のMicroGatewayとアプリケーションを停止する
$ apic stop --all // 全てのプロセスを停止する (どのディレクトリで実行してもOK)
6.「探索」でCRUD操作をテスト (API Designer)
プロセスが始動している状態で,右側にある「探索」を選択する
- 「Catモデル」のCRUDが既に作成済で用意されている (図の左側のリスト)
- 各メソッドの要約,パラメータ,応答を確認できる (図の中央部分)
- 作成したAPIを呼び出すためのサンプルコードを確認できる (図の右側部分)
- cURL,Ruby,Python,PHP,Java,Node,Go,Swift
==>**「探索」**では,APIのCRUD操作が行え,API呼び出しの実装コード例を確認できる
- 左側リストの中から「POST /Cats」を選択する
- 右側のAPI呼び出しサンプルコードの部分で,アイテムを追加する
- 「スキーマの表示」を選択
まとめ
-
誰でもすぐに作れる
実際に触ってみてわかったことは,やはり簡単なAPIの作成は非常にスピーディーに行える。apiconnectモジュールをインストール済の場合,$ apic loopback アプリ名
$ apic loopback
,$ apic create --type model
の2つのコマンドだけで,CRUD構築済のAPIが手に入る。特に,作成したAPIの利用にあたり,NodeやJava,Ruby,Pythonなどの各言語用のサンプルコードを得られるため誰でもとっつきやすく,すぐに試すことができる。もちろんバックエンドのDBやRESTなどをデータ・ソースとして設定することも可能で,$ apic loopback --type datasource
のコマンドでインタラクティブに行える。シンプルな内容であれば,GUI(API Designer)でも同様のことが実施できるのも魅力の1つかもしれない。 -
StrongLoop(LoopBack)のスキルが活用できる
ちなみに従来のStrongLoopを利用する場合との違いの1つは,コマンド名の違いである。従来は,slc loopback
のようにしてひな形アプリを作成していたが,API Connectでは,apic loopback
と入力する。また,GUIでモデル作成や管理をする際にも従来はslc arc
と入力してStrongLoop Arcを起動していた。API Connectでは,apic edit
と入力し,API Designerを起動する。この部分に関しては,若干コマンドは変わるものの,StrongLoopのloopbackに慣れている方はそのままスキルが活用できる。
今後は「API Connectを使用して,APIを公開する」部分についても記載予定。また,「APIが稼働するNodeランタイム自身の管理」についても触れる予定。
※本稿は,IBMのマニュアルサイト(KnowledgCenter)がまだ存在しない時期(2016/3/22深夜)に,npmモジュールを利用して確認した内容を投稿したものです。このため,一部使い方の変更点があるかもしれません。
※apiconnectモジュール v2系では,GUIやLoopBackアプリ作成時のコマンドオプション(e.g. コマンド実行時にアプリ名を指定しない形式に変更)等,一部修正点があります。この差分については,差分まとめ記事(6/5)を参照ください。(2016/06/07追記)