2013-08-06 4 views
5

मैं एक्सप्रेस ढांचे के लिए बिल्कुल नया हूं। मैं एक्सप्रेस एपीआई संदर्भ में application.post() विधि के लिए प्रलेखन नहीं मिला। क्या कोई फंक्शन में रखे गए सभी संभावित पैरामीटर के कुछ उदाहरण प्रदान कर सकता है? मैंने निम्नलिखित उदाहरणों के साथ कुछ साइटें पढ़ी हैं, पहला पैरामीटर क्या मतलब है?एक्सप्रेस फ्रेमवर्क app.post और app.get

  1. मुझे पता है कि दूसरा पैरामीटर कॉलबैक फ़ंक्शन है, लेकिन हम पहले पैरामीटर में वास्तव में क्या डालते हैं?

    app.post('/', function(req, res){ 
    
  2. इसके अलावा, चलो कहते हैं कि हम उन पोस्ट (एक निश्चित प्रारूप के साथ (हमारे सर्वर से डेटा भेजने) आईडी नंबर करना चाहते हैं [{आईडी: 134,123, यूआरएल: www.qwer.com} {आईडी: 131,211, यूआरएल: www.asdf.com}])। फिर हम आईडी को निकालना चाहते हैं और उन आईडी के साथ डेटा को हमारे सर्वर में कहीं से प्राप्त करना चाहते हैं। हम app.post विधि कैसे लिखेंगे जो हमें वस्तुओं की एक सरणी के इनपुट में हेरफेर करने की अनुमति देता है, ताकि हम ऑब्जेक्ट्स में अन्य कुंजियों के बावजूद आवश्यक जानकारी पुनर्प्राप्त करने के लिए केवल उन ऑब्जेक्ट की आईडी (कुंजी) का उपयोग कर सकें। कार्य के विवरण को देखते हुए, क्या हमें app.get() विधि का उपयोग करना है? यदि हां, तो हम app.get() फ़ंक्शन कैसे लिखेंगे?

आपके इनपुट के लिए बहुत बहुत धन्यवाद।

उत्तर

6

1. app.get('/', function(req, res){
यह जब यह देखता समारोह चलाने / करने के लिए अनुरोध के लिए सुनने और करने के लिए एक्सप्रेस कह रहा है।

पहला तर्क मिलान करने के लिए एक पैटर्न है। कभी-कभी '/' या '/privacy' जैसे शाब्दिक यूआरएल खंड, आप नीचे दिखाए गए प्रतिस्थापन भी कर सकते हैं। यदि here वर्णित है तो आप रेगेक्स से भी मिलान कर सकते हैं।

एक्सप्रेस के सभी आंतरिक भाग function(req, res, next) पैटर्न का पालन करें। एक आने वाला अनुरोध मिडलवेयर श्रृंखला (उदा। bodyParser) के शीर्ष पर शुरू होता है और जब तक कोई प्रतिक्रिया भेजता है, तब तक पास हो जाता है, या अभिव्यक्ति श्रृंखला के अंत तक पहुंच जाती है और 404 होती है।

आप आमतौर पर श्रृंखला के नीचे अपने app.router डालते हैं। एक बार एक्सप्रेस मिलने के बाद यह सभी app.get('path'..., app.post('path'... आदि के खिलाफ अनुरोध से मेल खाता है, जिस क्रम में वे स्थापित किए गए थे।

चर प्रतिस्थापन:

// this would match: 
// /questions/18087696/express-framework-app-post-and-app-get 

app.get('/questions/:id/:slug', function(req, res, next){ 
    db.fetch(req.params.id, function(err, question){ 
    console.log('Fetched question: '+req.params.slug'); 
    res.locals.question = question; 
    res.render('question-view'); 
    }); 
}); 

next():
आप function(req, res, next){} के रूप में अपने को संभालने कार्यों परिभाषित यदि आप next() उपज के लिए कॉल कर सकते हैं, वापस मिडलवेयर श्रृंखला में अनुरोध गुजर। आप इसे उदाहरण के लिए कर सकते हैंएक कैचऑल मार्ग:

app.all('*', function(req, res, next){ 
    if(req.secure !== true) { 
    res.redirect('https://'+req.host+req.originalUrl); 
    } else { 
    next(); 
    }; 
}); 

फिर, आदेश मामलों, आप अन्य मार्ग कार्यों के ऊपर इस डाल करने के लिए यदि आप इसे उन से पहले चलाने के लिए चाहते हैं।

मैंने पहले जेसन पोस्ट नहीं किया है लेकिन @ पीटर लियोन का समाधान इसके लिए मुझे ठीक लग रहा है।

6

टीजे कष्टप्रद रूप से इसे app.VERB(path, [callback...], callback एक्सप्रेस दस्तावेज़ों में दस्तावेज करता है, इसलिए इसके लिए एक्सप्रेस दस्तावेज़ खोजें। मैं उन्हें यहां कॉपी/पेस्ट करने वाला नहीं हूं। यह कहने का उनका असभ्य तरीका है कि app.get, app.post, app.put, सभी के पास एक ही कार्य हस्ताक्षर है, और HTTP से प्रत्येक समर्थित विधि के लिए इनमें से एक तरीका है।

प्राप्त करने के लिए अपने पोस्ट JSON डेटा, bodyParser मिडलवेयर का उपयोग करें:

app.post('/yourPath', express.bodyParser(), function (req, res) { 
    //req.body is your array of objects now: 
    // [{id:134123, url:'www.qwer.com'},{id:131211,url:'www.asdf.com'}] 
}); 
+0

यह वाक्यविन्यास मैंने वर्णित मिडलवेयर श्रृंखला का एक और उदाहरण है! 'express.bodyParser()' हस्ताक्षर 'फ़ंक्शन (req, res, next)' के साथ कुछ फ़ंक्शन देता है, और आंतरिक रूप से 'req.body' ऑब्जेक्ट में जेसन को पार्स करने के बाद आंतरिक रूप से 'अगली()' को कॉल करता है। एक्सप्रेस तब ऐपपोस्ट ('/ yourPath', ...) के THIRD तर्क के लिए मिडलवेयर चेन को अनुरोध पास करता है, जो पीटर ऊपर लिखा गया कार्य है। – Plato

+0

ओई, एक्सप्रेस दस्तावेज़ों में 'app.get' खोजने का प्रयास कर रहा है! 'App.VERB' टिप्पणी के लिए धन्यवाद। – FriendlyGuy

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