Пустой ответ GET на запрос содержимого файла JSON | koa2 - PullRequest
0 голосов
/ 07 мая 2018

Я новичок в koa2, и я пытаюсь получить содержимое файла JSON с koa2

app.use( async ( ctx ) => { 
  let url = ctx.request.url;
  if (url == "list") {
      let res = ctx.request.get('http://domain/hello.json');
      ctx.body = res.body;
  }
})

Файл JSON hello.json выглядит следующим образом:

{"da": "1212", "dad": "12addsf12"}

Я хочу, чтобы маршрут /list возвращал содержимое hello.json, однако ответ пуст. Что мне делать?

Обновление : Измените следующие строки кода:

 let res = ctx.request.get('http://domain/hello.json');
 ctx.body = res.body;

до:

 let res = ctx.get('http://domain/hello.json');
 ctx.body = res;

Вы должны получить контент сейчас.

Ответы [ 2 ]

0 голосов
/ 07 мая 2018

Возможно, Коа не так поступает, но это то, что я пытался и работал для меня (полный код для таких нубов, как я):

// jshint ignore: start
const koa2 = require("koa2");
const router = require('koa-simple-router');
const app = new koa2();
const request = require('request-promise-native');

// response
app.use(router(_ => {
    _.get('/list', async (ctx) => {
        const options = {
            method: 'GET',
            uri: 'http://www.mocky.io/v2/5af077a1310000540096c672'
        }
        await request(options, function (error, response, body) {
            // I am leaving out error handling on purpose, 
            // for brevity's sake. You must in your code.
            ctx.body = body;
        })
    });
}));

app.listen(3000);

И, подобно тому, что J ответ Пичардо указывает, Коа сама по себе не поддерживает маршрутизацию. Вам нужно использовать некоторое промежуточное программное обеспечение для маршрутизации.

0 голосов
/ 07 мая 2018

Koa сама по себе не поддерживает маршрутизацию, только промежуточное ПО, для этого вам нужно иметь промежуточное ПО маршрутизатора, попробуйте koa-router .

Ваше приложение будет выглядеть примерно так:

const route = require('koa-route')

app.use(route.get('/list', ctx => {
    // Route handling logic
});

Также обратите внимание, что ctx.get - это псевдоним для ctx.request.get, который возвращает информацию заголовка.

...