Open4
Nuxt.js v2とExpressで簡単なBFFを作ってみる
下準備
Nuxt.jsのプロジェクトがあるという前提で、
yarn add express module-alias
Nuxt.js
src
などのディレクトリの中に、api
というフォルダーを作成する
api
フォルダの中にroutes
フォルダ、app.js
、index.js
を作成
routes
の中にhello.js
を作成する
api
フォルダは人によってはserver
だったり
最終的な構造はこんな感じに
.
└── src/
└── api/
├── routes/
│ └── hello.js
├── index.js
└── app.js
以下をコピペ
nuxt.config.js
serverMiddleware: [
'~/api/index',
],
app.js
import express from 'express'
const app = express()
import hello from "./routes/hello"
app.use(express.json())
app.use("/hello", hello)
export default {
path: "/api",
handler: app,
}
index.js
const moduleAlias = require('module-alias')
moduleAlias.addAliases({
'@' : __dirname + '/../'
})
module.exports = require('./app')
routes/hello.js
import express from "express"
const router = express.Router()
router.get("/", (req, res) => {
res.json({ message: "Hello!" })
})
export default router;
これで、http://localhost:3000/api/hello
にアクセスすると(またはGETメソッドなどでcurlを使う)、jsonでメッセージが返ってくるようになります。
module-aliasを使っている理由
Nuxt.js v2では、serverMiddleware
の中では絶対パスからのインポートが使用できません。
そこで、module-alias
を使用してwebpackに無理矢理読み込ませることによって@
でのインポートを可能にしています。