我来自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;
感谢您的帮助和指导!
答案 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)
。