LoginSignup
63
67

More than 5 years have passed since last update.

IBM API Connect 使ってみた〜APIを作る〜

Last updated at Posted at 2016-03-22

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で作成)
  • 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.7 v3.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)を含む形式 (デフォルト)

スクリーンショット 2016-03-24 0.14.21.png

ひな形に含まれるpackage.jsonの中身に従って,npm installで依存するNodeモジュールが自動ダウンロードされる (完了まで十数秒待つ)
スクリーンショット 2016-03-24 0.14.50.png

下記の画面まで進めば,ひな形アプリは完成。
次のステップとしてガイドが表示される。
- cdコマンドで作ったアプリ内に移動 <--- 重要。忘れずに
- 「モデル作成」
- 「GUIコンソール(API Designer)の起動)」
- 「アプリの始動」の
スクリーンショット 2016-03-24 0.16.52.png

3. Modelを作成

上図のガイドに従って,以下のように入力

$ cd capsmaltApp

$ apic create --type model

Model作成もインタラクティブに行えるので,必要な情報を入力する

  • モデル名: Cat
  • データソース: db (memory)
  • モデルの基本クラス: PersistedModel
  • REST API: Yes
  • Custom plural: ブランクのままEnter
  • Common or server only: server
    スクリーンショット 2016-03-24 0.36.23.png

  • 1つめのプロパティーを設定 (猫種の名前)

    • プロパティ名: name
    • データ型: string
    • 必須か否か: No
    • デフォルト値: (blank)
      スクリーンショット 2016-03-24 0.38.18.png
  • 2つめのプロパティーを設定 (毛色)

    • プロパティ名: color
    • データ型: string
    • 必須か否か: No
    • デフォルト値: (blank)
      スクリーンショット 2016-03-24 0.39.04.png

4. API ConnectのGUI画面で確認 (API Designer)

API Designerを起動

$ apic edit

スクリーンショット 2016-03-24 0.47.57.png

自動でブラウザが立ち上がる (http://127.0.0.1:9000)
「製品・API・モデル・データソース」の「API」のページが開く

図の中央あたりに,
capsmaltApp 1.0.0 という先ほど作成したAPIが確認できる
スクリーンショット 2016-03-24 0.48.26.png

「モデル」を開くと,先ほど作成したモデルのCatが確認できる (noteはデフォルトで作成されている)
スクリーンショット 2016-03-24 0.48.54.png

5.「実行」でLoopBackアプリケーションを始動 (API Designer)

右側にある「実行」を選択し,その後「始動」を選択する
下図のように,ローカル環境でAPIのランタイムが始動する
==> 「実行」では,APIアプリの始動・停止が行える

スクリーンショット 2016-03-24 0.49.23.png

ちなみに,コマンドで始動・停止する場合は,以下のようにする

$ 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呼び出しの実装コード例を確認できる
スクリーンショット 2016-03-24 0.57.26.png

  • 左側リストの中から「POST /Cats」を選択する
  • 右側のAPI呼び出しサンプルコードの部分で,アイテムを追加する
    • 「スキーマの表示」を選択
      スクリーンショット 2016-03-24 1.16.01.png
    • 「生成」を選択 (図では,Singapura / Sepia / 1 を入力)
      スクリーンショット 2016-03-24 1.19.48.png
    • 「操作の呼び出し」を選択
      スクリーンショット 2016-03-24 1.23.28.png
    • 下図のように,「要求,応答,結果のjson」が確認できる スクリーンショット 2016-03-24 1.22.35.png
    • 「GET /Cats」で実行した場合の結果は以下
      • 上述の手順とは別に,「Scottish Fold / Cream / 2」をPOSTで追加済
      • 合計2匹の猫が登録されていることが確認できる スクリーンショット 2016-03-24 1.31.59.png

まとめ

  • 誰でもすぐに作れる
    実際に触ってみてわかったことは,やはり簡単な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追記)

63
67
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
63
67