ExpressとSQLite3で作成したWebAPIをHTMLで利用する

まずは前回のおさらいです

前回Expressでサーバーを構築してSQlite3のデータベースを利用して情報のやり取りをするためのWebAPIをさくせいしました

必要なパッケージは

  • Express
  • SQLite3
  • body-parser

この3つです

そしてAPIのコードはこちらです

今回はこのWebAPIを利用するためのHTMLを書いてみましたのでそちらの解説をしていきたいと思います

index.htmlでホーム画面を作成

最終的にこの画面を作成します

サーバーをスタートしてhttp://localhost:3000にアクセスするとindex.htmlが読み込まれてこの画面が表示されます

ということでindex.htmlです

GETメソッドでデータを抽出して表示する

まずはGETメソッドでアクセスしてすべてのデータを表示します

こんな感じでHTMLのテーブルを利用して表示します

テーブル部分は34行目~46行目です

ここにWebAPIにGETメソッドでアクセスして取得したデータを表示します

GETメソッドはfetchメソッドを利用して実装しました

9~11行目でJavascriptを読み込んでいます

GETメソッドを使ってすべてのデータを読み込んでいるのはwishlist.jsです

GETメソッドはwishlist.jsのWishListModuleでモジュール化した即時関数のなかにつくったfetchAllList()関数でfetchメソッドを実行しています

ここでは、ホーム画面にアクセスしたら自動的にすべてのデータを読み込む必要があるため、特にボタンなどトリガーは用意していません

読み込まれて、関数が実行されたら良いだけです

ということで、関数を実行する必要があるので

11行目でindex.jsを読み込んでそこでfetchAllList()関数を実行しています

この3行目です

これによってGETメソッドが実行されてデータを取得しています

関数の説明は以下のとおりです

BASE_URL = “http://localhost:3000/api/v1/wishlist”でWebAPIのURIを変数に代入しています

そしてURIに対して

const res = await fetch(BASE_URL)

でfetrchメソッドを実行しています

GETメソッドは特にオプションで指定する必要はありません

これですべてのデータがresに入っています

あとはこれを

const wishlist = await res.json()

としてwishlistの中に配列の形で代入

res.json()とすることで、jsonをJavascriptの配列に変換して利用できるようにしています

そしてfor (let i in wishlist) {処理}

でデータの数だけ処理を実行します

処理の内容は

先ほどのindex.htmlのテーブルのボディーに入れる内容をつぎつぎに読み込んで差し込んでいるというかたちです

document.getElementById(‘wishlist-content’).insertAdjacentHTML(‘beforeend’, body);

この部分でDOM操作をして抽出したデータをwishlist-contentというidを振っていたテーブルのボディーの後ろ’beforeend’にbodyの中身を付け加えて表示しています

あと、データのレコードごとに編集画面へのリンクと削除ボタンを加えています

POSTメソッドは<form>タグで実装

POSTメソッドでリストへの新規登録を行うようにしていますがそちらの実装は

<form>タグで実装しています

<form action=”/api/v1/wishlist” method=”POST” class=”add-form”>ここでURIを指定してPOSTメソッドでアクセスするようにしています

また、inputタグのname要素はWebAPIで設定した通りにしています

今回はこの辺で!

YouTubeもよろしくです!

コメント

  1. HNaito より:

    こんにちは、いつもお世話になります。

    本文に、
    「サーバーをスタートしてhttp://localhost:3000にアクセスするとindex.htmlが読み込まれてこの画面が表示されます」
    とありますが、app.jsにhtmlファイルを送信する部分の記述がありません。

    少し自分でも調べてみますが、ソースコードがあるようでしたら補足をお願いいたします。

    • Kikujiro より:

      こんにちは。いつもありがとうございます。
      11行目app.use(express.static(path.join(__dirname, ‘public’)));
      で、静的ファイルをルーティングするようにミドルウェアをつくってapp.use()に渡しています。ローカルサーバーへのアクセスによって、index.htmlが渡されるのでindex.htmlが表示されることになります。
      という認識になると思います。

  2. HNaito より:

    こんばんは、いつもお世話になります。

    Publicフォルダを作り、index.html, edit.html, index.js, wishlist.js, edit.js, delete.js, style.cssを入れたら、localhost:3000をアクセスしたときにホーム画面が表示されました。

    ご助言、ありがとうございました。

タイトルとURLをコピーしました