Koa - 发出内部请求
Koa - issue internal request
我们正在使用 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);
}
这完全是虚构的。我的观点是,我想 'simulate' 通过创建一个新请求并接收一个新响应来在我的应用程序中请求一个请求,然后我可以使用它来构建我的实际响应。
我不想直接调用我的路由 and/or 中间件。我希望它通过路由器,因为它必须在服务器范围内工作。
是否可以在不在本地主机上执行真正的 HTTP 请求的情况下模拟内部请求?
几年后,我有了答案。
最好的方法是从头开始创建一个新的 Context 对象并尝试 'Mock' Node.js IncomingMessage 和 ServerResponse 对象。
这并不容易,而且有点困难,但这是 Koa 现在所需要的。我最终开始 a new Koa-inspired framework 这样做更好。
我们正在使用 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);
}
这完全是虚构的。我的观点是,我想 'simulate' 通过创建一个新请求并接收一个新响应来在我的应用程序中请求一个请求,然后我可以使用它来构建我的实际响应。
我不想直接调用我的路由 and/or 中间件。我希望它通过路由器,因为它必须在服务器范围内工作。
是否可以在不在本地主机上执行真正的 HTTP 请求的情况下模拟内部请求?
几年后,我有了答案。
最好的方法是从头开始创建一个新的 Context 对象并尝试 'Mock' Node.js IncomingMessage 和 ServerResponse 对象。
这并不容易,而且有点困难,但这是 Koa 现在所需要的。我最终开始 a new Koa-inspired framework 这样做更好。