原答案
要基于@Dominooch 的答案,如果您只想返回 JSON,您可以使用 .json() 帮助程序。它会自动将 content-type 设置为 application/json 并且 stringify 是你传递给它的一个对象。
编辑:
为了澄清我们在这里所做的事情,我们将完全替换您的 301.json 并使用 nuxt 创建中间件的方式来:
- 定义一个通用处理程序,您可以将其重用于任何路由
- 明确定义哪些路径将使用您的处理程序(我假设您是 301.json 正在做的事情)
如果 301.json 真的只是您想要重定向的路径数组,那么您可以使用 .map() 但我个人不会,因为目前还不清楚哪些路径被重定向(请参阅我的最后一个示例)
也就是说,我要避免的最后一件事是制作一个全局中间件(为每个请求触发),以检查路径是否包含在您的数组中。 .map() 将使 nuxt 为您进行路由匹配(无论如何它已经这样做了),而不是通过您的处理程序发送 每个 请求。
// some-api-endpoint.js
import axios from 'axios'
export default {
path: '/endpoint'
handler: async (req, res) => {
const { data } = await axios.get('some-request')
res.json(data)
}
}
然后在你的 nuxt.config.js 中:
// nuxt.config.js
module.exports = {
// some other exported properties ...
serverMiddleware: [
{ path: '/endpoint', handler: '~/path/to/some-api-endpoint.js' },
]
}
如果 301.json 真的只是一个路径数组:
// nuxt.config.js
const routes = require('../301.json');
module.exports = {
// some other exported properties ...
serverMiddleware: routes.map(path =>
({ path, handler: '~/path/to/some-api-endpoint.js' }))
}
或者如果你有其他中间件:
// nuxt.config.js
const routes = require('../301.json');
module.exports = {
// some other exported properties ...
serverMiddleware: [
...routes.map(path =>
({ path, handler: '~/path/to/some-api-endpoint.js' })),
... // Other middlewares
}