web-dev-qa-db-ja.com

Nodejs Request Promiseステータスコードの表示方法

リクエストライブラリを使用して外部API呼び出しを行っています。 https://github.com/request/request 。私はネイティブのプロミス/非同期エクステンションを使用しています。 https://github.com/request/request-promise-native

ただし、ステータスコードを確認することはできません。未定義です。

public async session(): Promise<any> {

    const url = <removed>;

    const options = {

        uri: url,
        headers: {
            'Authorization': this.config.token
        },
        json: true,
        body: {
        }
    }

    try {
        const res = await request.post(options);

        if (res.statusCode !== 200) {
            // do something
        }
        console.log(res);
        console.log("statuscode", res.statusCode)
        return res;
    } catch (err) {
        return err;
    }
}

Res.statusCodeは未定義です。

6
Kay

ドキュメントによると、完全な応答を返すオプションを定義する必要があります。

https://github.com/request/request-promise#get-the-full-response-instead-of-just-the-body

const options = {

        resolveWithFullResponse: true

}
15
Kay

Resオブジェクトは未定義かもしれません。コールバックとしてリクエストを試すことができます

request(options, function (error, response, body) {

  console.log('statusCode:', response && response.statusCode); 

});

または、このようにすることができます https://www.npmjs.com/package/request-promise

var options = {
    uri: 'http://the-server.com/will-return/404',
    simple: true,
    transform: function (body, response, resolveWithFullResponse) { /* ... */ }
};

rp(options)
    .catch(errors.StatusCodeError, function (reason) {
        // reason.response is the transformed response
    });
2
NuOne