我们正在使用Koa来创建REST服务。
我想做的一件事是使用自定义请求对象从中间件调用内部API,并在将响应提供给真实客户端之前解析响应。
如果这有点难以理解,请考虑以下伪代码:
var myMiddleware = function(ctx, next) {
var fakeSubRequest = new Koa.Request('GET', '/some-internal-path');
var fakeSubResponse = yield koa.internalRequest(fakeSubRequest);
ctx.body = someTransformation(fakeSubResponse.body);
}
这完全是虚构的。我的观点是,我希望通过创建新请求并接收新响应来“模拟”我的应用程序中的请求,然后我可以使用它来构建我的实际响应。
我不想直接调用我的路由和/或中间件。我希望它通过路由器,因为它必须在服务器范围内工作。
是否可以在localhost上执行真正的HTTP请求来模拟内部请求?
几年后,我有一个答案。
最好的方法是从头开始创建一个新的Context对象,并尝试“模拟”Node.js IncomingMessage和ServerResponse对象。
这不是一件容易的事,而是一种黑客攻击,但这正是Koa现在所要求的。我最终开始做更好的a new Koa-inspired framework。