首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >访问request-promise get响应中的标头

访问request-promise get响应中的标头
EN

Stack Overflow用户
提问于 2016-08-31 02:10:04
回答 4查看 33.9K关注 0票数 23

我完全是JS世界的新手。我正在尝试编写一个测试用例来测试用户在网站上的操作。我正在使用request-promise模块来测试asyn调用。我找不到任何request-promise的api文档。如何访问响应的状态代码?现在,它打印未定义的。另外,有谁能确认一下,我们如何知道promise在成功时返回的是什么,它解析为的是单个值,还是async函数返回的所有参数。我们如何知道request.get(base_url).then(function(response, body)中function()的参数是什么?

代码语言:javascript
复制
var request = require("request-promise");
var promise = require("bluebird");
//
var base_url = "https://mysignin.com/"
//
describe("My first test", function() {
 it("User is on the sign in page", function(done) {
    request.get(base_url).then(function(response, body){
     // expect(response.statusCode).toBe('GET /200');
      console.log("respnse " + response.statusCode);
      console.log("Body " + body);
      done();
    }).catch(function(error) {
        done("Oops somthing went wrong!!");
    });
 });
});
EN

回答 4

Stack Overflow用户

发布于 2017-03-02 06:27:24

默认情况下,request-promise库只返回响应本身。但是,您可以在选项中传递一个简单的转换函数,该函数接受三个参数,并允许您返回其他内容。

因此,如果我想让头加上响应返回给我,我会这样做:

代码语言:javascript
复制
var request = require('request-promise');
var uri = 'http://domain.name/';

var _include_headers = function(body, response, resolveWithFullResponse) {
  return {'headers': response.headers, 'data': body};
};

var options = {
  method: 'GET',
  uri: uri,
  json: true,
  transform: _include_headers,
}

return request(options)
.then(function(response) {
  console.log(response.headers);
  console.log(response.data);
});

希望这能有所帮助。

票数 48
EN

Stack Overflow用户

发布于 2016-08-31 02:32:04

默认情况下,request-promise只返回请求的响应正文。要获取完整的响应对象,可以在发出请求时在options对象中设置resolveWithFulLResponse: trueExample in the docs

代码语言:javascript
复制
var request = require('request-promise');

request.get('someUrl').then(function(body) {
  // body is html or json or whatever the server responds
});

request({
  uri: 'someUrl',
  method: 'GET',
  resolveWithFullResponse: true
}).then(function(response) {
  // now you got the full response with codes etc...
});
票数 34
EN

Stack Overflow用户

发布于 2018-05-24 21:03:44

只需在get选项中传递resolveWithFullResponse: true就可以获取响应头。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39234359

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档