2016-08-30 15 views
7

मैं जेएस दुनिया के लिए पूरी नौसिखिया हूं। मैं एक परीक्षण केस लिखने की कोशिश कर रहा हूं जो किसी साइट पर उपयोगकर्ता के कार्यों का परीक्षण करता है। मैं asyn कॉल का परीक्षण करने के लिए अनुरोध-वादा मॉड्यूल का उपयोग कर रहा हूँ। मुझे अनुरोध-वादे के लिए कोई एपीआई दस्तावेज नहीं मिला। मैं प्रतिक्रिया के स्टेटस कोड तक पहुंच कैसे प्राप्त करूं? अभी यह अनिर्धारित प्रिंट करता है। साथ ही, क्या कोई भी पुष्टि कर सकता है, हम कैसे जानते हैं कि यह सफल होने पर क्या वादा करता है, क्या यह एक ऐसा मूल्य है जो यह एसिंक फ़ंक्शन लौटाता है या सभी पैरामीटर को हल करता है। हम कैसे जानते हैं कि request.get(base_url).then(function(response, body) में फ़ंक्शन() के पैरामीटर क्या हैं।अनुरोध-वादे में हेडर तक पहुंच प्रतिक्रिया प्राप्त करें

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!!"); 
    }); 
}); 
}); 
+0

जैसा कि मैं यहां देख सकता हूं (https://www.npmjs.com/package/request-promise) स्पष्ट रूप से पहले के फ़ंक्शन परम का पहला और एकमात्र पैरामीटर स्ट्रिंग के रूप में अनुरोध का मुख्य भाग है। – Masterakos

+1

और यहां यह दिखाता है कि पूर्ण प्रतिक्रिया कैसे प्राप्त करें। https://www.npmjs.com/package/request-promise#get-the-full-response-instead-of-just-the-body – Masterakos

उत्तर

7
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... 
}); 
0

Tsalikidis जवाब सही है। के लिए के रूप में:

इसके अलावा, किसी को भी इस बात की पुष्टि कृपया कर सकते हैं, कैसे, हम जानते हैं कि वादा रिटर्न जब यह सफल हुआ करते यह एक एकल मूल्य है कि यह करने के लिए हल करता है या सभी पैरामीटर async फ़ंक्शन

है

एक वादा (वादा/ए + अनुपालन) हमेशा एक एकल मूल्य लौटाता है। निस्संदेह यह मूल्य इसमें गहन घोंसला वाली वस्तु हो सकती है जिसमें बहुत सारी जानकारी है। लेकिन .then(function(response,body){ स्वाभाविक रूप से गलत है।

एक लाइब्रेरी जो एक वादा वापस भेजती है उसे लौटाई गई वस्तु के प्रारूप को दस्तावेज करना चाहिए।

13

डिफ़ॉल्ट रूप से, अनुरोध-वादा पुस्तकालय केवल प्रतिक्रिया ही देता है। हालांकि, आप अपने विकल्पों में एक सरल ट्रांसफॉर्म फ़ंक्शन पास कर सकते हैं, जो तीन पैरामीटर लेता है और आपको अतिरिक्त सामान वापस करने की अनुमति देता है।

तो अगर मैं हेडर चाहता था प्लस प्रतिक्रिया मेरे लिए लौट आए, मैं सिर्फ यह करना होगा:

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); 
}); 

आशा है कि मदद करता है।

+2

यह स्वीकार्य उत्तर होना चाहिए – speckledcarp

+0

रोब आपने अभी मुझे बहुत समय बचाया ... –

संबंधित मुद्दे