Nuxt serverMiddleware从API获取json

时间:2018-10-20 10:03:12

标签: vue.js vuejs2 axios nuxt.js nuxt

我不想从301.json重定向,而是要向我的api请求,该api返回我的json。

我正在使用@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();
    }
}

2 个答案:

答案 0 :(得分:3)

要以@Dominooch的答案为基础,如果只想返回JSON,则可以使用.json()帮助器。它会自动将内容类型设置为application / json,并将您传递给它的对象字符串化。

// 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' },
    ]
}

答案 1 :(得分:0)

这是我所做的,并且似乎可以正常工作:

//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)
  }
}