私は Express から来て、現在取り組んでいる新しいプロジェクトのために Koa2 を学ぼうとしていますが、アプリで最も基本的な Get 操作を機能させるのに苦労しています。
サーバー側では、ユーザーがアプリを承認するために使用する必要がある HTML リンクを返す承認サーバー (Etrade) にアクセスするルート設定があります。
Postman を使用してルートにアクセスし、呼び出しを介して Etrade からリンクが返されることを確認できますがconsole.log()
、応答本文で Postman に返されません。
クライアント アプリに接続すると、応答ステータス コード 204 が返されます。これは、これを正しく理解していれば、応答本文が空であることを意味します。
Koa2 の理解を深めるだけでなく、応答本文を渡す方法を理解する必要があります。
現在、次のようにセットアップ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;
最後に、鍵と秘密のものを除いたルートのロジック:
import Etrade from 'node-etrade-api';
const myKey = '';
const mySecret = '';
const configuration = {
useSandbox : true,
key : myKey,
secret : mySecret
};
const et = new Etrade(configuration);
export default function( router ) {
router.get('/etrade', getEtradeUrl);
}
async function getEtradeUrl( ctx, next ) {
// Isn't this how I send the response back to the client?
// This isn't coming through as a response body when using Postman or the client app
ctx.body = await et.getRequestToken(receiveVerificationUrl, failedToGetUrl);
}
function receiveVerificationUrl( url ) {
console.log(url); // This works and displays the response from etrade
return url
}
function failedToGetUrl( error ) {
console.log('Error encountered while attempting to retrieve a request token: ', error);
}
あなたの助けと指導に感謝します!