どうもです、タドスケです。
冬休み明けから Web 系の開発をお手伝いすることになりまして、現在必死で勉強しています。
せっかくなので勉強がてらブログに公開できるものを作ってみようと思い、Vue.js と WebAPI を使って簡単なアプリを作ってみました。
目次
作ったもの
ページを表示するたびに、猫に関するランダムな知識がランダムで表示されます。
データを読み込み中…
{{ error }}
{{ catFact }}
コード
コードは以下です。
<div id="app">
<p v-if="loading">データを読み込み中...</p>
<p v-else-if="error">{{ error }}</p>
<p v-else>{{ catFact }}</p>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue@3/dist/vue.global.min.js"></script>
<script>
const { createApp } = Vue;
createApp({
data() {
return {
catFact: '',
loading: false,
error: null,
};
},
methods: {
async fetchCatFact() {
this.loading = true;
this.error = null;
this.catFact = '';
try {
const response = await fetch('https://catfact.ninja/facts');
if (!response.ok) {
throw new Error('データの取得に失敗しました');
}
const data = await response.json();
const facts = data.data;
if (facts && facts.length > 0) {
// ランダムな豆知識を取得
const randomFact = facts[Math.floor(Math.random() * facts.length)];
this.catFact = randomFact.fact;
} else {
this.error = '豆知識が見つかりませんでした。';
}
} catch (err) {
this.error = err.message;
} finally {
this.loading = false;
}
},
},
mounted() {
// 初回ロード時に豆知識を取得
this.fetchCatFact();
},
}).mount('#app');
</script>
使用している WebAPI
ユーザー登録なしで使える無料の WebAPI はないかなーと思って ChatGPT に聞いてみたところ、『Cat Fact API』という WebAPI が見つかりました。
fetch(‘https://catfact.ninja/facts’) でアクセスするだけで取得できるので手軽で良いですね。
開発のポイント
この記事内で動くようにするため、WordPress の「カスタムHTML」 ウィジェットにコードを貼り付けています。
動作させるためには以下の制約があります。
- <body> 以下の要素のみを貼り付けること(<html>や<head>などは使えない)
- JavaScript, CSS を html 内に埋め込むこと
- 外部ライブラリは CDN を使うこと
今回の実装を通して、Vue.js と WebAPI を使ったアプリを作るイメージがつかめたので、他の WebAPI を使ったアプリにも挑戦してみたいと思います。
コメント
コメント一覧 (1件)
[…] […]