在Node.js中获取原始请求

时间:2015-01-25 18:58:01

标签: node.js

我需要测试我的JavaScript浏览器客户端,我需要echo服务器。当我说echo服务器时,我并不仅仅意味着回应身体(POST数据),而是整个请求,包括标题。

是否可以,或者我是否必须从请求属性重新创建请求头?

2 个答案:

答案 0 :(得分:0)

HTTP模块(以及connectexpress等包装框架)在处理请求时会公开两个对象。这两个对象被传递给请求的回调。以express为例:

app.get('/', function(request, response) {

第一个参数是请求对象,它包含所有内容(从标题到状态代码到正文到很多其他东西)。

查看特定模块的文档,了解每个模块的完成情况。

答案 1 :(得分:0)

我建议您使用nock模块,而不是使用“echo”服务器测试应用程序。

它允许您:

  • 防止发生真实的网络操作(测试中首选)
  • 测试请求是否符合预期
  • 使用自定义定义的响应回复该请求,包括自定义标头

还有更多。实际上,这应该比产生实际的HTTP服务器快得多。它还使您的测试代码库更清晰,更易于理解,因为响应的行为与您的请求和其他相关逻辑一起定义。

作为一个真实示例,请查看使用 Nock google-api-nodejs-client来测试客户端是否正确响应服务器的响应,即它在有效JSON时生成有效数据收到响应,它会在遇到400 HTTP状态代码时触发错误等等。所有这些都是在Nock的帮助下完成的。