解決できないこと
microCMSで作成したブログの詳細ページを作ることができない。
やりたいこと
ポートフォリオサイトにブログを付けたい。
サイト全体をnuxtjsで実装しており、ブログ部分はmicroCMSで実装を考えている。
ブログ箇所のコード
vue
1// pages/blog.vue 2 3<template> 4 <div class="main-content"> 5 <div class="l-content"> 6 <div class="blog-block"> 7 <div class="blog-block-list" v-for="(item, index) in items" :key="index"> 8 <nuxt-link :to="'blog/' + item.id"> 9 <p class="key-catch"> <img :src="item.key.url" alt=""></p> 10 <div class="blog-info"> 11 <h3 class="blog-title">{{ item.title }}</h3> 12 </div> 13 </nuxt-link> 14 </div> 15 </div> 16 </div> 17 </div> 18</template> 19 20<script> 21import axios from "axios"; 22export default { 23 data() { 24 return { 25 items: [] 26 }; 27 }, 28 async asyncData() { 29 const{data} = await axios.get( 30 'https://dummy.microcms.io/api/v1/blog', 31 { 32 headers: { 'X-API-KEY': 'dummyAPI' } 33 } 34 ); 35 return { 36 items:data.contents 37 }; 38 } 39}; 40</script> 41
vue
1 2//pages/blig/_id.vue 3 4<template> 5 <div class="main-content"> 6 <div class="l-content"> 7 <h2>{{ item.title }}</h2> 8 <div class="content" v-html="item.disc"></div> 9 </div> 10 </div> 11</template> 12 13<script> 14import axios from "axios"; 15 16export default { 17 async asyncData({ params }) { 18 const { data } = await axios.get( 19 `https://dummy.microcms.io/api/v1/blog/${params.id}`, 20 { 21 headers: { 'X-API-KEY': 'dummyAPI' } 22 } 23 ); 24 return { 25 items:data 26 }; 27 } 28}; 29</script> 30
出ているエラー
GET https://dummy.microcms.io/api/v1/blog/undefined 404
Error: Request failed with status code 404
Uncaught (in promise) Error: Request failed with status code 404
試したこと
_id.vue
の方から{ params }
と${params.id}
の記述を取り除くと、一覧ページは表示されるようになりました。
つまり、_id.vue
の方のURLがうまく取得できていないのではないかと考えましたが、それをどうやって解決すれば良いかがわかりません。
ご教授いただけますと幸いでございます。
参考にしたサイト
https://microcms.io/blog/create-nuxt-microcms-recruit
https://www.notion.so/microCMS-Nuxt-Jamstack-c7d68e68085a400f8eeb1887e97cdd6f
https://web-niar.com/blog/nuxtjs-microcms-vercel/
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。