技術系

React × DB 【概要編】

技術系

こんにちは、なかにしです。

今回は React × DBです!

ついにReactくんがただのView表示野郎から、
DB連携できるスーパースターになるときが来ました。

本当はLaravelに突っ込んで動かしたいところですが、
時間の都合上モックサーバーで動かしていきます。

モックサーバーはローカルで簡単に通信できる簡易サーバーです。
バックエンド側がまだできてないときとかに仮のDBとして使用したりします。

いってみよう!

前提

・React
・TypeScript が使える環境

モックサーバーを立てる

今回は「json server」を使用します。
謳い文句は「コーディングなしで完全な偽の REST API を30 秒以内に入手する」です。

その名の通り、めっちゃ早くモックアップができます。

▽インストール

npm install json-server --dev

▽package.jsonと同じ階層に「db.json(名前はなんでもいい)」を作ります。

▽db.jsonの中身に仮のデータを入れていきます。

{
  "Member": [
    {
      "id": 1,
      "name": "Tanaka",
      "age": 12
    },
    {
      "id": 2,
      "name": "Nakanishi",
      "age": 24
    },
    {
      "id": 3,
      "name": "Akiyama",
      "age": 45
    },
    {
      "id": 4,
      "name": "Takayama",
      "age": 22
    },
    {
      "id": 5,
      "name": "Nishi",
      "age": 8
    }
  ]
}

はい、完成です。
早すぎですね 🙂

早速サーバーを起動して見てみましょう!

▽ターミナルで以下コマンド

npx json-server --watch db.json --port 3100

▽サーバーが起動しました。
\{^_^}/hi! かわいい。

http://localhost:3100/memberにアクセスすると…

▽じゃん!でました!
これが簡易DBの中身です。

これをDBとして、GETやPOST、PUTなどを使用して操作します。

ちなみに…
「json-server.json」というファイルを作り、
中身にちょこっと書くとサーバーの起動が楽になります。

▽json-server.json の中身

{
  "watch": true,
  "port": 3100
}

▽起動がこれだけでOK!!

npx json-server db.json

Reactとサーバーをつなぐ

サーバーに繋いで非同期通信をしたい場合は「fetch」を使用するのがメジャーだと思いますが、
今回は使ってみて良さみが深かった「axios」を使用していきます。

※非同期通信の説明は100番煎じくらいになるので、ここでは省きます。
個人的にはyoutubeが分かりやすくておすすめです。

ざっくりの違いとしては
・fetch → インストール不要。ちょっとコードが長い。
・axios → インストール必要。コードが短い。

また、axiosは「.get」でGET、「.post」でPOSTのように
書き方が直感的に分かりやすいので気に入っています。

▽早速インストール

npm install axios

▽GETの構文

axios.get(URL)

▽GETの例

const URL = 'members';

// getで取ってきたデータをconsole.logで表示
axios.get(URL)
  .then(function (response) {
    console.log(response.data);
  })

▽POSTメソッドの構文

axios.post('データがあるURL', Jsonデータ);

▽POSTの例

// 「'members'」にjsonを新規追加したい!

const URL = 'members';
const json = {
   id: 10
   name: 'Nakayama'
   age: 25
};

axios.post(URL , jdon);

▽PUTの構文

axios.post(URL + '/' + 更新したいデータのid , jsonデータ);

私はここで結構躓いたので詳しく説明します。
例えば、以下のJsonをモックアップとして使用していた場合、

{
  "Member": [
    {
      "id": 1,
      "name": "Tanaka",
      "age": 12
    },
    {
      "id": 2,
      "name": "Nakanishi",
      "age": 24
    },
    {
      "id": 3,
      "name": "Akiyama",
      "age": 45
    },
    {
      "id": 4,
      "name": "Takayama",
      "age": 22
    },
    {
      "id": 5,
      "name": "Nishi",
      "age": 8
    }
  ]
}

localhost:3100/member でjson全体が取得でき、
localhost:3100/member/1を指定したらidが1のjsonが取れます。▽

PUTでやろうとしているのは、/idで開いた↑のようなデータを修正するよ!ってことです。

▽PUTの例:

// 「'members'」の中、idが2のjsonを更新したい!

const URL = 'members';
const json = {
   id: 2
   name: 'Tanaka-Kun'
   age: 18
};

// 「members/2」 でidが2のデータを取ってきて、jsonに更新する。
axios.post(URL + '/' + json.id , json);

さいごに

以上、React × Json-serverでDB操作の紹介でした。

ちゃんとDB操作している動画とコードはReact × DB 【動作編】からご覧ください。

今回はここまで!
Enjoy Hacking!!

コメント

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