WebAPIのモックを用意する|AngularでWebサイト作成
WebAPIのモックを用意する|AngularでWebサイト作成
Angularの学習の為に、AngularでWebサイトを作ってみることにしました(Angularのバージョンは4.3.6です)。
適宜作業内容をまとめていきます。
基本的な部分は公式チュートリアルなどを参考にしながら進めています。
今回は、前回までで作成したCRUDのリクエストに対するレスポンスを返すWebAPIを用意します。
ただし、サーバサイドのAPIを実装するのではなく、モックとしてAngularでJSONをレスポンスで返すことのできるライブラリを使用していきます。
開発環境
・OS:Windows8.1 64bit
・node:v7.2.1
・npm:4.0.5
・Angular:4.3.6
・開発ツール:VisualStudioCode
手順
手順1.ライブラリの追加
npmで追加インストールします。
cd APP_NAME //←アプリケーションを作成したディレクトリに移動 npm i angular-in-memory-web-api --save
手順2.JSONを格納するserviceファイルを作成
以下のような「memorydata.service.ts」を作成します。
import { InMemoryDbService } from 'angular-in-memory-web-api'; import { User } from './user/user'; import { Fruit } from './fruit/fruit'; export class InMemoryDataService implements InMemoryDbService { createDb() { let users :User[] = [ {id:1,name:'太郎'}, {id:2,name:'次郎'}, {id:3,name:'三郎'} ]; let fruits :Fruit[] = [ {id:1,name:'リンゴ',price:100}, {id:2,name:'バナナ',price:80}, {id:3,name:'イチゴ',price:300} ]; return {users,fruits}; } }
「InMemoryDbService」はnpmでインストールした「angular-in-memory-web-api」に含まれているクラスで、
これを実装するクラスとして上記のクラス「InMemoryDataService 」を作成していきます。
インポートしているUserやFruitはBeanクラスのようなもので、コンポーネントなどでも利用していましたが、1括り(ユーザ情報など)のデータを格納するオブジェクト用のクラスです。各コンポーネントのディレクトリ以下の様に定義します。例えばUserクラスであれば以下のuser.tsのようになります。
export class User { id:number name:string }
手順3.app.module.tsを編集
上記のファイルをimportするようにapp.module.tsを編集します。
import { InMemoryWebApiModule } from 'angular-in-memory-web-api'; //←追加 import { InMemoryDataService } from './memorydata.service'; //←追加 ~省略~ @NgModule({ ~省略~ imports: [ ~省略~ InMemoryWebApiModule.forRoot(InMemoryDataService), //←追加 ],
手順4.サービスを編集
各APIへリクエストを送るリクエストURLを変更します。
・user一覧取得なら「app/users」、
・user詳細取得ならGETメソッドで「app/users/{id}」
・user更新ならPUTメソッドで「app/users/{id}」
・user削除ならDELETEメソッドで「app/users/{id}」
({id}のところには該当UserのIDを指定)
といった具合にするとモックAPIにリクエストが送信されます。
手順5.確認
ブラウザにて確認をしてみましょう。注意する点は、ページをリロードすると追加・編集した内容は初期のJSONデータの状態に戻るということです。編集情報が永続的に保存されるわけではありません。
感想
SPAの開発を行う上で、サーバ側のAPI実装が必要になりますが、フロント側だけ先行して実装したい様な場合、とても便利だと思いました。
WEBアプリケーション関連 人気連載リンク
基礎からPHPWEBアプリ解発を学ぶなら・・
PHP基礎 連載
より実践的なWEBアプリ開発講座!Bootstrap活用を学ぶなら・・
魁!小野の塾 連載