在nuxt和express应用程序中包含api路由(使用create-nuxt-app)

时间:2018-11-12 00:19:29

标签: express nuxt.js nuxt

我使用create-nuxt-app npm命令创建了一个应用程序,并获得了这个server / index.js文件。

const express = require('express')
const consola = require('consola')
const { Nuxt, Builder } = require('nuxt')
const app = express()
const host = process.env.HOST || '127.0.0.1'
const port = process.env.PORT || 3000

app.set('port', port)

// Import and Set Nuxt.js options
let config = require('../nuxt.config.js')
config.dev = !(process.env.NODE_ENV === 'production')

async function start() {
  // Init Nuxt.js
  const nuxt = new Nuxt(config)

  // Build only in dev mode
  if (config.dev) {
    const builder = new Builder(nuxt)
    await builder.build()
  }

  // Give nuxt middleware to express
  app.use(nuxt.render)

  // Listen the server
  app.listen(port, host)
  consola.ready({
    message: `Server listening on http://${host}:${port}`,
    badge: true
  })
}
start()

我还有一个包含我的api路由的js文件。

const { Router } = require('express')
const router = Router()
router.get('/route1', function(req, res){
   return 'Hello world';
}
module.exports = router

我正在寻找一种使用“ api”为路由添加前缀的方法,而不是一并(如果可能)将其添加到每条路由中,以及将路由放在首位。

2 个答案:

答案 0 :(得分:1)

只需将您的api路由用作带有前缀路径的中间件

import api from './api';
app.use('/api', api);

参考:https://expressjs.com/en/api.html#path-examples

答案 1 :(得分:0)

根据文档:

  

https://nuxtjs.org/api/configuration-servermiddleware/

     

https://nuxtjs.org/examples/auth-routes

API路由适用于nuxt.config.js

serverMiddleware: [
    '~/api'
],

对我有用。