概要
何で micro?
起動
index.jsconst micro = require('micro')
const serviceConfig = require('./micro.config.js')
const server = micro(serviceConfig)
const host = process.env.HOST || 'localhost'
const port = process.env.PORT || '3000'
server.listen(port, host)
設定
Nuxt
micro.config.jsconst { Nuxt, Builder } = require('nuxt')
const config = require('../nuxt.config.js')
const nuxt = new Nuxt(config)
if (nuxt.options.dev) {
new Builder(nuxt).build()
}
module.exports = async (req, res) => await nuxt.render(req, res)
ストレージへのアクセス
micro.config.jsconst handler = require('serve-handler')
module.exports = async (req, res) => await handler(req, res, {
public: __dirname
})
ルーティング
micro.config.jsconst handler = require('serve-handler')
const { router, get } = require('microrouter')
const { Nuxt, Builder } = require('nuxt')
const api = require('./api/v1/')
const config = require('../nuxt.config.js')
const nuxt = new Nuxt(config)
if (nuxt.options.dev) {
new Builder(nuxt).build()
}
module.exports = async (req, res) => {
await router(
api,
get('(/*)', (req, res) => {
return handler(req, res, {
public: __dirname,
directoryListing: false
})
}),
get('/*', () => nuxt.render(req, res))
)(req, res)
}
おまけ
API
api/v1/index.jsconst { withNamespace, get } = require('microrouter')
const user = require('./user')
const api = withNamespace('/api/v1')
module.exports = api(
get('/users', user.getList),
get('/users/(:username)', user.getProfile)
)