Creating LoopBack application
この記事では、独自のループバックアプリケーションを作成する最初のステップのいくつかを説明します。
新しいアプリケーションを作成する
新しい空のLoopBackアプリケーションを作成するためにはじめに中のステップを実行していれば、この節をスキップしてアプリケーションの初期化に進むことができます。
新しいアプリケーションを作成する
新しいブランクテンプレートLoopBackアプリケーションを作成するには、このコマンドを入力してください。
$ slc lb project myapp
“myapp”を自分のアプリケーションの名前に置き換えてください。このコマンドでLoopBackアプリケーションの”足場”のすべてのファイルとディレクトリが含まれるmyapp(または自分で使用するアプリケーション名)ディレクトリが出来る。
空っぽのアプリケーションを実行する
この時点で、”空っぽ”のLoopBackアプリケーションがある。十分なことはできませんが、提供されるLoopBackの足場がなんであるかという感覚が掴める程のものは実行することができます。これらのコマンドを実行してみてください。
$ cd myapp
$ slc run
もちろん、”myapp”の代わりに自分のアプリケーション名を指定してください。
ブラウザで、http://0.0.0.0:3000/というURLをロードしてください。空っぽのアプリによって返される基本的なJSONデータが表示されます。こんな感じです。
{
"started": "2014-06-25T07:58:38.392Z",
"uptime": 18.365
}
APIエクスプローラを見るためにはブラウザでhttp://0.0.0.0:3000/explorerというURLをロードしてください。
APIエクスプローラで組み込みユーザーとアクセストークンモデルのREST APIが表示されます。
中身をざっと確認
前述したように、slcはLoopBackアプリケーションのディレクトリとファイルを作成します。具体的に:
app.js- メインプログラムファイルのアプリケーション。app.json- アプリケーションがリッスンするTCPポートやIPアドレスを指定する構成ファイル。datasources.json- データソース構成ファイル。/modelsディレクトリ - アプリケーション起動時にこのディレクトリのすべてのJavaScriptファイルをロードする。詳細はinitial the applicationを見てください。models.json- slc lb モデルで作成したモデル定義が含まれています。モデルを追加するために、このファイルを手動で編集することができます。詳しい情報は、Creating modelsを見てください。/node_modules- プロジェクトを識別するアプリケーションメタデータで、プロジェクトの依存リストや説明、バージョンなどのメタデータを提供します。詳しい情報は、package.jsonを見てください。
アプリケーションコードを実行してみる
エディタでapp.jsを開いてみてください。次の拡張ポイントがマークされています。これらは、独自のアプリケーションコードを追加できる場所です。
- リクエストのプリプロセス
- リクエスト処理
- エラー処理
アプリケーション初期化
app.boot()メソッドでアプリケーションのルートディレクトリを設定する。関数は文字列またはオブジェクトの任意の引数を取る。
- 文字列の場合、アプリケーションルートディレクトリとして引数を使用する。
- オブジェクトの場合は、オブジェクトから
model,dataSourcesとappRootDirプロパティを探します。appRootDirがないのなら、現在の作業ディレクトリをアプリケーションのルートディレクトリとして設定します。
アプリケーションは/modelsと/bootディレクトリのためのアプリケーションルートディレクトリを探します。app.boot()の引数がオブジェクトの場合は、modelsとdataSourceプロパティを使用してモデルとデータソースを定義します。
それは
- アプリケーションディレクトリ(または引数で与えられ得散れば、
options.dataSroucesオブジェクト)中のdatasources.jsonファイルを使用してデータソースを作成する。 - アプリケーションディレクトリ(または引数が与えられていれば
options.modelsオブジェクトにあるmodels.jsonファイルを使用してモデルを作成する。 require()でappRootDir/modelsディレクトリ中にあるすべてのJavaScriptファイルをロードする。これらのモデルを参照する方法の情報のために、Getting a reference to a modelを見てください。require()でappRootDir/bootディレクトリ中にあるすべてのJavaScriptファイルをロードする。
slc lb projectコマンドで作成したメインであるapp.jsプログラムファイル中にapp.boot(__dirname)を呼び出す行がある。__dirnameはNodeの現在のスクリプトを含むディレクトリのグローバル変数です。
複数のファイル中にapp.boot()とapp.model(name, config)を使用して結合しないでください。なぜなら、競合状態になりモデルが未定義になってしまうからです。
app.boot()を使用してこれを回避するためには、すべてのモデルがモデル定義の一部として渡されることを確認して下さい。