如何在nuxt/koa2框架下,使用koa-router提供restful接口

发布于 2022-09-11 18:45:11 字数 1738 浏览 13 评论 0

问题描述

如何在nuxt/koa2框架下,使用koa-router提供restful接口

问题出现的环境背景及自己尝试过哪些方法

目的是使用nuxt构建页面,并且使用nuxt自带的koa server提供后端服务

相关代码

const Koa = require("koa");
const router = require("../router/index");
const consola = require("consola");
const { Nuxt, Builder } = require("nuxt");

const app = new Koa();

// Import and Set Nuxt.js options
let config = require("../nuxt.config.js");
config.dev = !(app.env === "production");

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

const {

host = process.env.HOST || "127.0.0.1",
port = process.env.PORT || 9999

} = nuxt.options.server;

// Build in development
if (config.dev) {

const builder = new Builder(nuxt);
await builder.build();

} else {

await nuxt.ready();

}

// start router -----------------------------<
// app.use(router.routes()).use(router.allowedMethods());

app.use(ctx => {

ctx.status = 200;
ctx.respond = false; // Bypass Koa's built-in response handling
ctx.req.ctx = ctx; // This might be useful later on, e.g. in nuxtServerInit or with nuxt-stash
nuxt.render(ctx.req, ctx.res);

});

app.listen(port, host);
consola.ready({

message: `Server listening on http://${host}:${port}`,
badge: true

});
}

start();

你期待的结果是什么?实际看到的错误信息又是什么?

期望在start server的时候注入中间件,打通接口;但是ctx.respond = false; // Bypass Koa's built-in response handling这个位置绕过了koa-router对接口的处理。目前的结果是,关闭这句话页面无法正常路由但是接口可以正常调通;打开这个句话接口无法调通,网页可以正常路由。

希望大神们,帮助一下萌新。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

奶气 2022-09-18 18:45:11
// 路由配置
  app.use(koaBody({
    multipart: true,
    formidable: {
      maxFieldsSize: 1024 * 1024 * 5,
      uploadDir: './temp'
    }
  }))
  app.use(router.routes())
  app.use(router.allowedMethods())

把这段代码放到if (config.dev)这句前面就行了,其他的按正常的koa语法来

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文