使用koa2和koa-router获取204 api - 响应正文未被传递

时间:2016-04-19 14:30:57

标签: javascript rest koa koa-router koa2

我来自Express并尝试学习Koa2来完成我正在进行的新项目,但我正努力让最基本的Get操作为我的应用程序工作。

在服务器端,我有一个路由设置,它正在命令授权服务器(Etrade),它返回一个HTML链接,用户需要使用该链接来授权该应用程序。

我可以使用邮递员点击路线,看到我通过我的kD电话从Etrade获得了回复,但是它没有回复给回复体中的邮递员。

当我将其连接到客户端应用程序时,我得到的响应状态代码为204,这意味着如果我能正确理解这一点,我的回复正文是空的。

我需要弄清楚如何传递响应体,以及提高我对Koa2的理解。

我目前正在设置我的console.log(),如下所示:

server.js

我的import Koa from 'koa'; import convert from 'koa-convert'; import proxy from 'koa-proxy'; import logger from 'koa-logger'; import body from 'koa-better-body'; import api from '../config/router/router'; import historyApiFallback from 'koa-connect-history-api-fallback'; import config from '../config/base.config'; const port = config.server_port; const host = config.server_host; const app = new Koa(); app.use(logger()); app.use(body()); app.use(api.routes()); app.use(api.allowedMethods()); // enable koa-proxyy if it has been enabled in the config if ( config.proxy && config.proxy.enabled ) { app.use(convert(proxy(config.proxy.options))); } app.use(convert(historyApiFallback({ verbose : false }))); server.listen(port); console.log(`Server is now running at http://${host}:${port}.`); 设置如下:

router.js

最后是路线的逻辑,减去关键和秘密的东西:

import Router from 'koa-router';
import etradeVerification from '../../server/api/etrade/verification';

const api = new Router({
    prefix: '/api'
});

etradeVerification(api);

export default api;

感谢您的帮助和指导!

1 个答案:

答案 0 :(得分:1)

  

ctx.body = await et.getRequestToken(receiveVerificationUrl,   failedToGetUrl);

对et.getRequestToken的调用不会返回任何内容。当等待着火时,它就会被定义为未定义。通常情况下,我建议使用es6-promisify,但它也不是标准的Node接口(一个回调,带有错误和值参数(非常令人失望!)

也许创建一个像Promisify函数一样的函数:

function getRequestToken(et){
    return new Promise(function(resolve, reject){
        et.getRequestToken(resolve, reject)
    })
}

然后你可以ctx.body = await getRequestToken(et)