Nuxt3パブリックベータ版時点の情報となります。
server/apiの使い方
「server/api」ディレクトリ以下のファイルでは、サーバーサイドからリクエストが行えるAPIを作成できます。
server/api
└── my-api.ts
server/api/my-api.ts
export default (req, res) => {
return 'Hello World'
}
Vueファイルからの呼び出しはuseFetch
、もしくはuseAsyncData
を使用します。
APIでreturn
したデータはdata
オブジェクト内に格納されています。
pages/index.vue
// useAsyncData
const { data } = await useAsyncData('get-api', () => {
return $fetch('/api/my-api')
})
// useFetch
const { data } = await useFetch('/api/my-api')
server/api以下のファイルはインポートできない
例えばShopifyの初期化ファイルを「server/api」以下に作成した場合。
server/api/shopify/client.ts
import Client from 'shopify-buy'
const client = Client.buildClient({
domain: process.env.SHOPIFY_DOMAIN,
storefrontAccessToken: process.env.SHOPIFY_ACCESS_TOKEN,
language: 'ja-JP'
})
export default client
プラグインファイルからはインポートできません。
plugins/shopify.ts
// NG
import client from '~/server/api/shopify/client'
export default defineNuxtPlugin((nuxtApp) => {
console.log(client)
})
コード自体は稼働するものの、ターミナルには下記エラーが発生します。
console
# サーバーミドルウェアからのインポートは、アプリのVue部分にはできません。
Importing from server middleware is not allowed in the Vue part of your app.
結論
初期化ファイルなどのimport
前提のファイルは、Nuxt2と同じく「plugins」ディレクトリに置くと良いでしょう。
← Prev
Next →
あなたの力になれること
私自身が独学でプログラミングを勉強してきたので、一人で学び続ける苦しみは痛いほど分かります。そこで、当時の私がこんなのあったら良いのにな、と思っていたサービスを立ち上げました。周りに質問できる人がいない、答えの調べ方が分からない、ここを聞きたいだけなのにスクールは高額すぎる。そんな方に向けた単発・短期間メンターサービスを行っています。
独学プログラマのサービス
Nuxt3の投稿
1
Nuxt3 Betaをブラウザに立ち上げる【Nuxt3 × VSCodeセットアップ】
2
Nuxt3のsetup内ではthisの代わりにuseNuxtApp()を使用する
3
Nuxt3でレイアウトファイルを使用するには<NuxtLayout>を使う
4
Nuxt3で動的ルーティングを生成するには[id].vueを作成する
5
Nuxt3のmiddlewareの登録と呼び出し&Beta版のバグとその回避策
6
Nuxt3betaのServerMiddlewareで特定ルートのみ発火させる方法は動かない
7
importする自作プラグインはserver/apiには置けない
8
Nuxt3でinjectみたいに自作クラスを登録するにはprovideを使う
9
Nuxt3のuseFetch()で2回目以降のapiがスルーされる問題
1
Nuxt3を使ってShopifyの商品一覧を取得しよう
2
Nuxt3をNetlifyCLIとnetlify.tomlを使ってNetlifyにデプロイしよう
3
Nuxt3のserver/apiとuseFetchを使用してShopifyへサーバーAPIリクエストを実装
4
Nuxt3でShopifyのCheckoutIDが付与されたURLにリダレクト処理を行う
5
【Nuxt3×Shopify】Piniaを導入した商品取得のベストプラクティス