Vue.js Nuxt服务器中间件从API获取json

Vue.js Nuxt服务器中间件从API获取json,vue.js,vuejs2,axios,nuxt.js,Vue.js,Vuejs2,Axios,Nuxt.js,我不想从301.json获得重定向,而是想向返回json的api发出请求 我正在使用@nuxtjs/axios模块 const redirects = require('../301.json'); export default function (req, res, next) { const redirect = redirects.find(r => r.from === req.url); if (redirect) { console.log

我不想从301.json获得重定向,而是想向返回json的api发出请求

我正在使用
@nuxtjs/axios
模块

const redirects = require('../301.json');

export default function (req, res, next) {

    const redirect = redirects.find(r => r.from === req.url);

    if (redirect) {
        console.log('redirect: ${redirect.from} => ${redirect.to}');
        res.writeHead(301, { Location: redirect.to });
        res.end();
    } else {
        next();
    }
}

以下是我所做的,并且似乎有效:

//uri-path.js
import axios from 'axios'

export default {
  path: '/uri/path',
  async handler (req, res) {
    const { data } = await axios.get('http://127.0.0.1:8000/uri/path')
    res.setHeader('Content-Type', 'text/html')
    res.end(data)
  }
}

要基于@Dominooch的答案进行构建,如果只想返回JSON,可以使用.JSON()帮助程序。它会自动将内容类型设置为application/json,并将stringify作为您传递给它的对象

// some-api-endpoint.js
import axios from 'axios'

export default {
    path: '/endpoint'
    async handler (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' },
    ]
}

你试过什么?什么不起作用?虽然这段代码可以解决这个问题,但如何以及为什么解决这个问题将真正有助于提高您的帖子质量,并可能导致更多的投票。请记住,你是在将来回答读者的问题,而不仅仅是现在提问的人。请在回答中添加解释,并说明适用的限制和假设。