Vueアプリケーションの作成

次のリンクにアクセスすると、StackBlitzでVueアプリケーションを作成できます

Edit on StackBlitz

<!-- src/App.vue -->
<script setup>
import { onMounted, ref } from "vue";
import { useDebounceFn } from "@vueuse/core";
import { Delta, QuillEditor } from "@vueup/vue-quill";
import "@vueup/vue-quill/dist/vue-quill.snow.css";

const id =
  window.localStorage.getItem("id") ??
  String(window.crypto.getRandomValues(new Uint16Array(1))[0]);

window.localStorage.setItem("id", id);

// ここに作成したREST APIエンドポイントを指定
// `memo-demo` の部分をHasura Cloudプロジェクト名に書き換えてください
const endpoint = `https://memo-demo.hasura.app/api/rest/page/${id}`;

const content = ref(new Delta([{ insert: "読み込み中…" }]));
const defaultContent = new Delta([
  { insert: "メモ帳\n", attributes: { header: 1 } },
  { insert: "こんにちは!\n" },
  { insert: "これは「Hasuraで作るREST API」のデモ用Webアプリです。\n" },
  {
    insert:
      "ここに入力した内容は自動的にHasuraに送信されデータベースに保存されます。\n",
    attributes: { link: endpoint },
  },
]);

onMounted(async () => {
  console.log("endpoint", endpoint);
  const res = await fetch(endpoint);
  const data = await res.json();
  content.value = new Delta(data.page?.content ?? defaultContent);
  console.log("mounted", data);
});

const updateContent = useDebounceFn(async (content) => {
  const res = await fetch(endpoint, {
    method: "PUT",
    body: JSON.stringify({ content }),
  });
  const data = await res.json();
  console.log("updated", data);
}, 250);
</script>

<template>
  <QuillEditor
    toolbar="full"
    :content="content"
    @update:content="updateContent"
  />
</template>

ローカル環境で作成する場合は、StackBlitzにアクセスし、左の[Project]パネルから[↓ (Download Project)]ボタンを押すと、ソースコード一式をダウンロードできます。ダウンロードしたZIPファイルを展開後、npm install コマンドなどで必要なパッケージを導入することで同様にVueアプリケーションを作成できます。

ソースコードの中には、HasuraのREST APIのエンドポイントURLが含まれます。そのURLに含まれるドメイン名の部分の memo-demo は、Hasura Cloudプロジェクト名です。プロジェクトによって異なるので、自分の作成したプロジェクトに合わせて書き換えましょう。

// src/App.vue
// ここに作成したREST APIエンドポイントを指定
// `memo-demo` の部分をHasura Cloudプロジェクト名に書き換えてください
const endpoint = `https://memo-demo.hasura.app/api/rest/page/${id}`;

このエンドポイントURLを自分の作成したプロジェクトのものに書き換えると完成です。

Hasuraを使用してPostgresデータベースに接続したREST APIを構築し、それを利用したWebアプリを作成できました 🎉

Hasuraのコンソールにアクセスすると、実際にデータが更新されていることを確認できます。