Send Docs Feedback

Note: Most user interface tasks can be performed in Edge Classic or the New Edge experience. For an overview, getting started topics, and release notes specific to the New Edge experience, see the docs.

Apigee-127

Apigee-127 は、ノート PC で Node.js に機能の豊富なエンタープライズクラスの API を構築するための、モデル優先のツールキットです。Apigee-127 は、Apigee が開発してデベロッパコミュニティーに公開したオープンソースプロジェクトです。 

ビデオ: Apigee-127 について

 

知っておくべき事柄

  • 標準に準拠した付属の Swagger エディタを使用して API をモデル化および構成します。
  • ミドルウェアコンポーネントは Swagger モデルの読み込み、検証、処理を行い、自動で Apigee-127 API プロジェクトと結び付けます。
  • デベロッパは、API のコアロジックを Node.js に実装することに専念します。
  • API は Apigee Edge と組み合わせてまったくローカルに実行するか、完全に Apigee Edge 上または Node.js 対応の他の PaaS 上で実行します。

今すぐ始めよう!

ビデオ: 127 コマンドラインインターフェイスのデモを見る

 

API モデルを優先する

Apigee-127 を使用して API を構築するには、まず Swagger エディタを起動します。このエディタを使用して、Swagger 2.0 互換の API 仕様 -- API 全体の青写真 -- を構築し、構成します。 エディタは、コマンド「a127 project edit」で起動します。 

Apigee-127 用の Swagger エディタ

このエディタの使い勝手は直感的で、構成ファイルは読みやすい YAML 形式です。API の構築に合わせて、エディタが同時進行で API ドキュメントを対話式に構築します。

基本的には、このエディタを使用して、API が機能するために必要なすべてを 1 つの swagger.yaml ファイルとして「構成」します。 

API のリソースエンドポイント (この例では /hello) は次のように構成します。

    paths:
      /hello:
        x-swagger-router-controller: "hello_world" 
x-swagger-router-controller は、Apigee が Swagger コミュニティーに提供したカスタムの Swagger 機能拡張です。この機能拡張は、操作の背後にあるロジックを実装する Controller ファイルの名前を指定します (例えば、<project-home>/api/controllers/hello_world.js)。機能拡張の詳細については、「Understanding Swagger」を参照してください。

API の操作動詞や ID は以下のように指定します (ID はコントローラ -- API ビジネスロジック -- のメソッドに対応)。

    get:
      description: "Returns 'Hello' to the caller"
      operationId: "hello"

クエリーパラメータは以下のように指定します。

     parameters:
        - name: search
          in: query
          description: The Query to pass to Twitter
          required: true
          type: string

レスポンスオブジェクトの外観は以下のようになります。

HelloResponse:
    required:
      - name
    properties:
      name:
        type: string
      tag:
        type: string
 

さらに、任意で x-a127 機能拡張を使用して、キャッシュ処理のようなエンタープライズクラスの機能を API に追加できます。

x-a127-services:
  cache:
    provider: volos-cache-memory
    options:
      name: name
      ttl: 10000
 
Swagger 仕様の全体像を把握したい場合は、GitHub に用意されている Apigee-127 example project の仕様を参照してください。掲載されているのは、Twitter 検索 API を呼び出す API プロキシです。

ビジネスロジックに専念する

Apigee-127 ミドルウェアコンポーネント、例えば swagger-tools は、重い処理のほとんどを担当し、Swagger モデルと API 実装との「接着剤」の役割を果たします。また、swagger-tools ミドルウェアは Swagger モデルの検証も行い、コントローラにパラメータなどの検証事項をコーディングする必要性をなくします。API のデベロッパは、Node.js へのコントローラファイル -- API がリクエストやレスポンスをどのように処理するかを定義する「ビジネスロジック」 -- の実装に専念できます。

/api/controllers/hello_world.js  
var util = require('util');

module.exports = {
  hello: hello
};

function hello(req, res) {

  var name = req.swagger.params.name.value;
  var hello = name ? util.format('Hello, %s', name) : 'Hello, stranger!';

  res.json(hello);
}
 

ビデオ: 気象情報 API の構築 

 

ビデオ: 高度な気象情報 API の構築

 

ビデオ: API への分析の統合

 

参考文献

Apigee-127 のドキュメントや例の詳細については、Apigee-127 documentation wiki を参照してください。

Apigee-127 の主眼は API の構築です。 デベロッパが採用したくなる優れた API を設計するためのヒントについては、Apigee が無償で提供している 電子ブック『Web API Design』の参照をお勧めします。 

 

Help or comments?