POST ক্যোয়ারী প্যারামিটারগুলি কীভাবে পুনরুদ্ধার করবেন?


768

আমার সরল রূপটি এখানে:

<form id="loginformA" action="userlogin" method="post">
    <div>
        <label for="email">Email: </label>
        <input type="text" id="email" name="email"></input>
    </div>
<input type="submit" value="Submit"></input>
</form>

এখানে আমার এক্সপ্রেস.জেএস / নোড.জেএস কোডটি রয়েছে:

app.post('/userlogin', function(sReq, sRes){    
    var email = sReq.query.email.;   
}

আমি চেষ্টা sReq.query.emailবা sReq.query['email']বা sReq.params['email']তাদের কাজ কোনটিই ইত্যাদি। তারা সবাই ফিরে আসে undefined

আমি যখন একটি গেট কলটিতে পরিবর্তন করি তখন এটি কাজ করে, তাই .. কোনও ধারণা?


33
সুরক্ষা : bodyParser()এখানে উত্তরগুলি ব্যবহার করা প্রত্যেককে নীচে
@ সানলিঞ্চের

বডি পার্সার মডিউলটি ব্যবহার করুন । এখানে কিছু হয় শরীর-পার্সার জন্য usful ব্যবহারের উদাহরণগুলি
drorw

উত্তর:


1250

জিনিস আছে পরিবর্তিত আবার শুরু একবার এক্সপ্রেস 4.16.0 , আপনি এখন ব্যবহার করতে পারেন express.json()এবং express.urlencoded()শুধু মত এক্সপ্রেস 3.0

এটি এক্সপ্রেস starting.০ থেকে ৪.১৫ অবধি শুরু ভিন্ন ছিল :

$ npm install --save body-parser

এবং তারপর:

var bodyParser = require('body-parser')
app.use( bodyParser.json() );       // to support JSON-encoded bodies
app.use(bodyParser.urlencoded({     // to support URL-encoded bodies
  extended: true
})); 

বাকিগুলি এক্সপ্রেস 3.0.০ এর মতো :

প্রথমে আপনাকে শরীরের পোস্ট ডেটা পার্স করার জন্য কিছু মিডলওয়্যার যুক্ত করতে হবে।

নিম্নলিখিত কোডের দুটি বা দুটি যুক্ত করুন:

app.use(express.json());       // to support JSON-encoded bodies
app.use(express.urlencoded()); // to support URL-encoded bodies

তারপরে, আপনার হ্যান্ডেলারে, req.bodyঅবজেক্টটি ব্যবহার করুন :

// assuming POST: name=foo&color=red            <-- URL encoding
//
// or       POST: {"name":"foo","color":"red"}  <-- JSON encoding

app.post('/test-page', function(req, res) {
    var name = req.body.name,
        color = req.body.color;
    // ...
});

মনে রাখবেন যে এর ব্যবহার express.bodyParser()বাঞ্ছনীয় নয়।

app.use(express.bodyParser());

... এর সমতুল্য:

app.use(express.json());
app.use(express.urlencoded());
app.use(express.multipart());

সুরক্ষা উদ্বেগগুলি এর সাথে বিদ্যমান express.multipart()এবং সুতরাং আপনার প্রয়োজনীয় নির্দিষ্ট এনকোডিং প্রকারের জন্য স্পষ্টভাবে সমর্থন যুক্ত করা ভাল। আপনার যদি মাল্টিপার্ট এনকোডিং প্রয়োজন হয় (উদাহরণস্বরূপ ফাইলগুলি আপলোড করতে সহায়তা করুন) তবে আপনার এটি পড়া উচিত ।


76
যদি এই উত্তরটি সঠিকভাবে কাজ করে না, নিশ্চিত হয়ে নিন যে আপনার content-typecurl -d '{"good_food":["pizza"]}' -H 'content-type:application/json' "http://www.example.com/your_endpoint"
শিরোনামটি

6
নাম / মান জোড়া যুক্ত ফর্ম পোস্ট করা এবং জেএসএন বডি পোস্ট করার মধ্যে পার্থক্য কী? তারা দুজনেই কি রে.কো.
chovy

7
@ শেভি হ্যাঁ, তারা করে। bodyParserবিমূর্ততা জেএসওএন, ইউআরএল-এনকোডেড এবং req.bodyবস্তুর মধ্যে ডেটা মাল্টিপার্ট করে ।
ক্রিস্টজান

7
মিডলওয়্যার এক্সপ্রেসের সাথে আর বান্ডিল না হওয়ায় এই কোডটি আমাকে ত্রুটি দিয়েছে; আপনাকে বডি পার্সার ব্যবহার করতে হবে: github.com/senchalabs/connect#middleware
araneae

11
এক্সপ্রেস 4 ব্যবহার করে জসন পড়ার জন্য, কেবলমাত্র app.use(require('body-parser').json())লাইনই যথেষ্ট। এবং তারপরে আপনি আপনার অনুরোধের বডি অবজেক্ট req.bodyথেকে কোনও রুটের সংজ্ঞা থেকে জাসন ডেটা পড়তে পারেন ।
মার্টিন কারেল

90

এক্সপ্রেস.ওডি পার্সার () ব্যবহার করে সুরক্ষা উদ্বেগ

যদিও সব অন্যান্য উত্তর বর্তমানে ব্যবহার সুপারিশ express.bodyParser()মিডলওয়্যার, আসলে এই কাছাকাছি একটি লেফাফা হয় express.json(), express.urlencoded()এবং express.multipart()middlewares ( http://expressjs.com/api.html#bodyParser )। ফর্ম অনুরোধ সংস্থার পার্সিং express.urlencoded()মিডলওয়্যার দ্বারা সম্পন্ন করা হয় এবং আপনাকে যা ফর্ম ডেটা req.bodyঅবজেক্টে প্রকাশ করতে হবে তা হ'ল ।

সমস্ত আপলোড করা ফাইলের (এবং আবর্জনা সংগ্রহ করা হয় না) জন্য অস্থায়ী ফাইলগুলি কীভাবে / তৈরি করে তা সুরক্ষার উদ্বেগের কারণে , এখন মোড়ক ব্যবহার না করার পরিবর্তে আপনার কেবলমাত্র মিডলওয়্যারগুলি ব্যবহার করার পরামর্শ দেওয়া হচ্ছে ।express.multipart()connect.multipart()express.bodyParser()

দ্রষ্টব্য: connect.bodyParser()শীঘ্রই কেবলমাত্র অন্তর্ভুক্ত করার জন্য আপডেট হবে urlencodedএবং jsonযখন সংযোগ 3.0 প্রকাশিত হবে (যা এক্সপ্রেস প্রসারিত হয়)।


সংক্ষেপে, পরিবর্তে ...

app.use(express.bodyParser());

... আপনার ব্যবহার করা উচিত

app.use(express.urlencoded());
app.use(express.json());      // if needed

এবং যদি / যখন আপনাকে মাল্টিপার্ট ফর্মগুলি (ফাইল আপলোড) হ্যান্ডেল করার দরকার হয়, তৃতীয় পক্ষের লাইব্রেরি বা মিডলওয়্যার যেমন মাল্টিপার্টি, বাসবয়, ডিকার ইত্যাদি ব্যবহার করুন


প্রশ্নের নীচে একটি মন্তব্য যুক্ত করা হয়েছে যাতে আরও লোকেরা আপনার উদ্বেগ এবং পরামর্শ দেখে। অ্যান্ড্রু কেলি ব্লগ পোস্টে বিশদ সমাধানগুলি (এখনও) আপনার মতে প্রাসঙ্গিক হতে পারে? (কেবল অন্যের জন্য জিজ্ঞাসা করা, আমার প্রয়োজনগুলি সম্পূর্ণ অভ্যন্তরীণ সরঞ্জামগুলির জন্য ^^)
ফিলিপলস

@ ফিলিপএলস - হ্যাঁ, এবং আমি এন্ড্রুয়ের পোস্টটিও উল্লেখ করেছি। এই পরামর্শগুলির মধ্যে যে কোনও (প্রতিটিটির পতন বিবেচনায় নেওয়া) প্রাসঙ্গিক।
শান লিঞ্চ

এছাড়াও, একবার কানেক্ট 3.0 অন্তর্ভুক্ত না করেই মুক্তি হয় multipart()অংশ হিসেবে bodyParser(), bodyParser()"নিরাপদ" আবার হয়ে, কিন্তু স্পষ্টভাবে একটি তৃতীয় পক্ষের লাইব্রেরি ব্যবহার একাধিক সমর্থন সক্ষম করার জন্য আপনাকে করতে হবে।
শান লিঞ্চ

84

দ্রষ্টব্য : এই উত্তরটি এক্সপ্রেস 2 এর জন্য। এক্সপ্রেস 3 এর জন্য এখানে দেখুন ।

আপনি যদি কানেক্ট / এক্সপ্রেস ব্যবহার করছেন তবে আপনার বডি পার্সার মিডওয়্যারটি ব্যবহার করা উচিত : এটি এক্সপ্রেস গাইডে বর্ণিত হয়েছে ।

// example using express.js:
var express = require('express')
  , app = express.createServer();
app.use(express.bodyParser());
app.post('/', function(req, res){
  var email = req.param('email', null);  // second parameter is default
});

এখানে আসল সংযোগ-কেবল সংস্করণ:

// example using just connect
var connect = require('connect');
var url = require('url');
var qs = require('qs');
var server = connect(
  connect.bodyParser(),
  connect.router(function(app) {
    app.post('/userlogin', function(req, res) {
      // the bodyParser puts the parsed request in req.body.
      var parsedUrl = qs.parse(url.parse(req.url).query);
      var email = parsedUrl.email || req.body.email;;
    });
  })
);

ক্যোরিস্ট্রিং এবং বডি উভয়ই নিম্ন-স্তরের লাইব্রেরির চেয়ে রেল-স্টাইলের প্যারামিটার হ্যান্ডলিং ( qs) ব্যবহার করে পার্স করা হয়েছে । অর্ডার দিয়ে বার বার প্যারামিটার বিশ্লেষণ করার জন্য , প্যারামিটার বন্ধনী আছে দরকার: । এটি নেস্টেড মানচিত্রগুলিও সমর্থন করে। এইচটিএমএল ফর্ম জমাগুলি বিশ্লেষণ করা ছাড়াও, বডি পার্সার স্বয়ংক্রিয়ভাবে JSON অনুরোধগুলি পার্স করতে পারে।querystringqsname[]=val1&name[]=val2

সম্পাদনা করুন : আমি এক্সপ্রেস.জেজে পড়েছি এবং এক্সপ্রেসের ব্যবহারকারীদের কাছে আরও স্বাভাবিক হওয়ার জন্য আমার উত্তরটি সংশোধন করেছি।


হ্যা ঠিক আছে. আমি বডি পার্সার () চেষ্টা করি। ডকটি বলেছেন যে আমি এটি পুনরায় জিজ্ঞাসা () থেকে পেতে পারি তবে আমার কিছুই পাওয়া যায় নি। এটা খুব অদ্ভুত গেট থোতে আমার কোনও সমস্যা নেই।
মুরভিনলাই

3
না, কেবলমাত্র জিইটি প্যারামগুলিই রেকর্ড.কোওয়ারি। আপনি পোষ্ট ডেটা রেইক.এইডি মাধ্যমে পাবেন। Req.params () ফাংশনটিতে তাদের উভয়ই অন্তর্ভুক্ত রয়েছে।
ইয়োনরান

আমার দিকে নজর না দিয়ে দুর্ঘটনাবশত এই উত্তরটিকে বিপথগামী ক্লিক ক্লিক করে ফেলেছে! এখন স্ট্যাকওভারফ্লো আমাকে এটিকে পরিবর্তন করতে দেবে না। ESP। হতাশার কারণ এটি সহায়ক ছিল ... আমি আপনার আরও একটি ভাল উত্তরকে উত্সাহিত করেছি যা আমি স্পষ্টভাবে এটির জন্য অনুসন্ধান করতে চাইনি। :)
হোস্টাইলফোর্ক বলেছেন যে এসই

33

মিডলওয়্যার ছাড়াই পোস্ট করা ক্যোয়ারীটি তৈরি করতে চাইলে এটি এটি করবে:

app.post("/register/",function(req,res){
    var bodyStr = '';
    req.on("data",function(chunk){
        bodyStr += chunk.toString();
    });
    req.on("end",function(){
        res.send(bodyStr);
    });

});

এটি ব্রাউজারে প্রেরণ করবে

email=emailval&password1=pass1val&password2=pass2val

মিডলওয়্যার ব্যবহার করা সম্ভবত এটি আরও ভাল তবে আপনাকে প্রতিটি রুটে বার বার এটি লিখতে হবে না।


3
খুব সুন্দর ... খুব শীঘ্রই, যারা খুব শীঘ্রই বা পরে অবজ্ঞা করা হবে এমন একটি লাইব্রেরির উপর নির্ভর করতে চান না তাদের জন্য
ড্যানিয়েল

আপনি সহজেই নিজের মিডলওয়্যারটি তৈরি করতে পারেন
মায়োম্যান

এটি একটি দুর্দান্ত উত্তর তবে অতিরিক্ত পাঠ্য কেন "" ---------------------------- 359856253150893337905494 বিষয়বস্তু-বিভাজন: ফর্ম-ডেটা; নাম = "পুরো নাম" রাম ---------------------------- 359856253150893337905494-- "আমি এই নম্বরটি চাই না।
নওরাজ

25

এক্সপ্রেস 4 ব্যবহারকারীদের জন্য নোট:

আপনি যদি চেষ্টা করেন এবং app.use(express.bodyParser());আপনার অ্যাপ্লিকেশনটিতে রাখেন , আপনি নিজের এক্সপ্রেস সার্ভারটি শুরু করার চেষ্টা করার সময় আপনি নিম্নলিখিত ত্রুটিটি পাবেন:

ত্রুটি: বেশিরভাগ মিডলওয়্যার (যেমন বডি পার্সার) এক্সপ্রেসের সাথে আর বান্ডিল হয় না এবং আলাদাভাবে ইনস্টল করা আবশ্যক। দয়া করে https://github.com/senchalabs/ সংযোগ করুন # মিতলওয়্যারটি দেখুন

আপনাকে এনপিএম থেকেbody-parser আলাদাভাবে প্যাকেজটি ইনস্টল করতে হবে , তারপরে নীচের মতো কিছু ব্যবহার করুন (উদাহরণটি গিটহাব পৃষ্ঠা থেকে নেওয়া ):

var express    = require('express');
var bodyParser = require('body-parser');

var app = express();

app.use(bodyParser());

app.use(function (req, res, next) {
  console.log(req.body) // populated!
  next();
})

এই তথ্যের জন্য আপনাকে অনেক ধন্যবাদ। বডি পার্সার ব্যবহারের নতুন পদ্ধতির সাথে মোকাবিলা করার চেষ্টা করে আমার চুলগুলি টানছিল! এটি ছিল একটি বড় যুগান্তকারী - সত্যই প্রশংসা করুন
টমি

1
হিপলপ: বডি-পার্সার অবহেলিত বডি পার্সার: স্বতন্ত্র জেসন / ইউলিনকোডড মিডলওয়্যারগুলি ব্যবহার করুন
মোহাম্মদ ফয়জান খান

19

কিছু ফর্ম দেওয়া:

<form action='/somepath' method='post'>
   <input type='text' name='name'></input>
</form>

এক্সপ্রেস ব্যবহার করে

app.post('/somepath', function(req, res) {

    console.log(JSON.stringify(req.body));

    console.log('req.body.name', req.body['name']);
});

আউটপুট:

{"name":"x","description":"x"}
req.param.name x

6
আমার জন্য কাজ না। অ্যাপ.ইউজ (এক্সপ্রেস.ওডি পার্সার ()) ব্যবহার করা দরকার;
কাউকেয়

@ কাউকেয় এখানে একেবারে ঠিক আছে তবে এক্সপ্রেস.বডি পার্সার () আমার পক্ষে ঠিক তেমন কাজ করছে না এটি অবমূল্যায়ন হয়েছে
মোহাম্মদ ফয়জান খান

@ মোহাম্মদফাইজঙ্খন এটি একটি পরীক্ষামূলক কাজ ছিল, আমি আর এক্সপ্রেস ব্যবহার করিনি, এখন সাহায্য করতে পারছি না। এক্সপ্রেস.বডি পার্সার () এর অনুরূপ ফাংশনগুলির জন্য এটি গুগল করুন। ভাল কপাল!
কাউকেয়

16

ব্যাক-এন্ড:

import express from 'express';
import bodyParser from 'body-parser';

const app = express();
app.use(bodyParser.json()); // add a middleware (so that express can parse request.body's json)

app.post('/api/courses', (request, response) => {
  response.json(request.body);
});

সামনের অংশ:

fetch("/api/courses", {
  method: 'POST',
  body: JSON.stringify({ hi: 'hello' }), // convert Js object to a string
  headers: new Headers({ "Content-Type": "application/json" }) // add headers
});

15
app.use(express.bodyParser());

তারপরে app.postঅনুরোধের জন্য আপনি পোস্টের মান পেতে পারেন req.body.{post request variable}


আপনার পোস্টের অনুরোধটি এখানে পরিবর্তনশীল, প্রশ্নটির ইনপুট ফিল্ডের আইডিটি নাকি পুরো ফর্মটি বা কী?
ইগক্লাউড

2
express.bodyParser () অবচয় করা হয়েছে re আপনার উত্তর আপডেট করুন
মোহাম্মদ ফয়জান খান

15

এক্সপ্রেস 4.4.1 এর জন্য আপডেট

নিম্নলিখিতগুলির মিডওয়্যার এক্সপ্রেস থেকে সরানো হয়েছে।

  • bodyParser
  • JSON
  • urlencoded
  • একাধিক

মিডলওয়্যারটি আপনি সরাসরি 3.0 এর মত প্রকাশের মতো ব্যবহার করেন। আপনি নিম্নলিখিত ত্রুটি পাবেন:

Error: Most middleware (like urlencoded) is no longer bundled with Express and 
must be installed separately.


এই মিডলওয়্যারটি ব্যবহার করার জন্য, এখন আপনাকে প্রতিটি মিডলওয়্যারের জন্য আলাদাভাবে এনপিএম করা দরকার ।

যেহেতু বডি পার্সারকে অবহেলিত হিসাবে চিহ্নিত করা হয়েছে, তাই আমি জসন, ইউরেনকোড এবং মাল্টিপার্ট পার্সার যেমন ফর্মডেবল, কানেক্ট-মাল্টিপার্টি ব্যবহার করে নীচের উপায়ে সুপারিশ করি। (মাল্টিপার্ট মিডলওয়্যারগুলিও হ্রাস করা হয়)।

এছাড়াও মনে রাখবেন, কেবল ইউলেনকোড + জসন সংজ্ঞায়িত করে ফর্মের ডেটা বিশ্লেষণ করা হবে না এবং জিজ্ঞাসা করা হবে যে কেউ অপরিজ্ঞাত হবে। আপনাকে একটি মিডওয়্যারটি মাল্টিপার্ট অনুরোধটি হ্যান্ডেল সংজ্ঞায়িত করতে হবে।

var urlencode = require('urlencode');
var json = require('json-middleware');
var multipart = require('connect-multiparty');
var multipartMiddleware = multipart();

app.use(json);
app.use(urlencode);
app.use('/url/that/accepts/form-data', multipartMiddleware);

আমার ধারণা এটি সত্যই খারাপ বৈশিষ্ট্য আপডেট
মোহাম্মদ ফয়জান খান

শুধু বডি পার্সের জন্য আমাকে প্রচুর কোড করতে হবে। হ্যাকটি কী
মোহাম্মদ ফয়জান খান

1
এটির কাজ পেতে আমাকে ".મિডলওয়ার ()" যুক্ত করতে হয়েছিল ('জসন-মিডলওয়্যার')।
ডাস্টিনবি

8

4.1 এবং উপরে এক্সপ্রেসের জন্য

যেহেতু বেশিরভাগ উত্তর এক্সপ্রেস, বডি পার্সার, কানেক্ট করতে ব্যবহার করছে; যেখানে বহুগুণকে হ্রাস করা হয়। পোস্ট মাল্টিপার্ট অবজেক্টগুলি সহজেই প্রেরণের একটি নিরাপদ উপায় রয়েছে।

মাল্টার সংযোগ.মল্টিপার্ট () এর প্রতিস্থাপন হিসাবে ব্যবহার করা যেতে পারে।

প্যাকেজ ইনস্টল করতে

$ npm install multer

আপনার অ্যাপ্লিকেশন এ এটি লোড করুন:

var multer = require('multer');

এবং তারপরে এটিকে মিডওয়্যার স্ট্যাকের সাথে অন্য ফর্ম পার্সিং মিডওয়্যারের সাথে যুক্ত করুন।

app.use(express.json());
app.use(express.urlencoded());
app.use(multer({ dest: './uploads/' }));

সংযুক্ত.জসন () অ্যাপ্লিকেশন / জেসন পরিচালনা করে

কানেক্ট.আরলেঙ্কোড () হ্যান্ডল করে অ্যাপ্লিকেশন / x-www-form-urlencoded

মাল্টার () মাল্টিপার্ট / ফর্ম-ডেটা পরিচালনা করে


8

আমি এই সঠিক সমস্যাটি অনুসন্ধান করছিলাম। আমি উপরের সমস্ত পরামর্শ অনুসরণ করেছিলাম কিন্তু রেকর্ড.কোই এখনও একটি খালি জিনিস returning returning ফিরিয়ে দিচ্ছে} আমার ক্ষেত্রে এটি এইচটিএমএল ভুল হওয়ার মতোই সাধারণ কিছু ছিল।

আপনার ফর্মের এইচটিএমএলে, নিশ্চিত করুন যে আপনি 'name'কেবলমাত্র নয়, আপনার ইনপুট ট্যাগগুলিতে অ্যাট্রিবিউটটি ব্যবহার করেছেন 'id'। অন্যথায়, কিছুই পার্স করা হয় না।

<input id='foo' type='text' value='1'/>             // req = {}
<input id='foo' type='text' name='foo' value='1' /> // req = {foo:1}

আমার বোকা ভুল আপনার সুবিধার।


এখানেও একই সমস্যা। তবে আমি শুরু থেকেই নামটি বৈশিষ্ট্যটি ব্যবহার করছিলাম। আসুন দেখুন সমস্যা কি।
সাইফ আল ফালাহ

6

আপনি অ্যাপ.ইউজ (এক্সপ্রেস.বডি পার্সার ()) ব্যবহার করবেন না । বডি পার্সার হ'ল জসন + ইউরেনকোডড + মালিটপার্টের একটি ইউনিয়ন। আপনি এটি চেঁচাবেন না কারণ 3.0 সংযোগ 3.0 এ মাল্টিপার্টটি সরানো হবে।

এটি সমাধান করার জন্য, আপনি এটি করতে পারেন:

app.use(express.json());
app.use(express.urlencoded());

এটি জেনে রাখা খুব জরুরি যে অ্যাপ.ইউজ (অ্যাপ.আউটার) জেসন এবং ইউলিনকোডের পরে ব্যবহার করা উচিত, অন্যথায় এটি কাজ করে না!


4

অনুরোধ স্ট্রিমিং আমার জন্য কাজ করেছে

req.on('end', function() {
    var paramstring = postdata.split("&");
});

var postdata = "";
req.on('data', function(postdataChunk){
    postdata += postdataChunk;
});

1
করছেন তুলনায় উন্নত postdata.split("&")কোর মডিউল লোড করতে হবে querystring = require('querystring')এবং তারপর আপনার পার্স postdataসঙ্গে querystring.parse(postdata);
জন স্লেজার 1

4

আমি উভয়ই পোষ্ট এবং জিইটি অনুরোধের জন্য নিম্নলিখিত কোড ব্যবহার করে সমস্ত পরামিতিগুলি খুঁজে পেতে পারি ।

var express = require('express');
var app = express();
const util = require('util');
app.post('/', function (req, res) {
    console.log("Got a POST request for the homepage");
    res.send(util.inspect(req.query,false,null));
})

আপনার প্রকাশের সংস্করণ দিয়ে উত্তরটি আপডেট করার বিষয়ে আপনার কি আপত্তি আছে?
lfender6445

3

এক্সপ্রেস সংস্করণে লিখেছেন 4.16

রাউটার ফাংশনের অভ্যন্তরে আপনি req.bodyপোস্ট ভেরিয়েবল অ্যাক্সেস করতে সম্পত্তি ব্যবহার করতে পারেন । উদাহরণস্বরূপ, যদি POSTএটি আপনার ফর্মের রুট হয় তবে এটি আপনাকে যা ইনপুট দেয় তা ফেরত পাঠায়:

function(req,res){
      res.send(req.body);

      //req.body.email would correspond with the HTML <input name="email"/>
}

যারা পিএইচপি-র সাথে পরিচিত তাদের জন্য পিএস: পিএইচপি-র $_GETভেরিয়েবল অ্যাক্সেস করার জন্য req.queryএবং পিএইচপি-র ভেরিয়েবল অ্যাক্সেস করার জন্য $_POSTআমরা req.bodyনোড.জেএস-এ ব্যবহার করি ।


1
var express        =         require("express");
var bodyParser     =         require("body-parser");
var app            =         express();

app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());

app.get('/',function(req,res){
  res.sendfile("index.html");
});
app.post('/login',function(req,res){
  var user_name=req.body.user;
  var password=req.body.password;
  console.log("User name = "+user_name+", password is "+password);
  res.end("yes");
});
app.listen(3000,function(){
  console.log("Started on PORT 3000");
})

1

পোস্ট প্যারামিটারগুলি নিম্নলিখিত হিসাবে পুনরুদ্ধার করা যেতে পারে:

app.post('/api/v1/test',Testfunction);
http.createServer(app).listen(port, function(){
    console.log("Express server listening on port " + port)
});

function Testfunction(request,response,next) {
   console.log(request.param("val1"));
   response.send('HI');
}

1
আপনি কি বুঝতে পারেন যে এটি কাজ করবে না? paramজিইটি অনুরোধের জন্য ব্যবহৃত হয় .. পোস্ট নয় এবং আপনার উদাহরণে বিশদগুলির অভাব রয়েছে, নতুন আগতদের জন্য খুব বিভ্রান্তিকর। এবং তার উপরে request.paramপ্রকৃতপক্ষে অবমূল্যায়ন করা হয়েছে, সুতরাং আপনার উদাহরণটি এতগুলি স্তরে ভুল।
vdegenne

0

আপনি ব্যবহার করছেন req.query.postভুল পদ্ধতি সঙ্গে req.query.postসাথে কাজে method=get, method=postসাথে কাজে শরীর-পার্সার

এটি পেতে পোস্ট পরিবর্তন করে এটি চেষ্টা করুন :

<form id="loginformA" action="userlogin" method="get">
<div>
    <label for="email">Email: </label>
    <input type="text" id="email" name="email"></input>
</div>
<input type="submit" value="Submit"></input>  
</form>

এবং এক্সপ্রেস কোডে 'app.get' ব্যবহার করুন


0

এক্সপ্রেস-ফাইলআপলোড প্যাকেজটি ব্যবহার করুন :

var app = require('express')();
var http = require('http').Server(app);
const fileUpload = require('express-fileupload')

app.use(fileUpload());

app.post('/', function(req, res) {
  var email = req.body.email;
  res.send('<h1>Email :</h1> '+email);
});

http.listen(3000, function(){
  console.log('Running Port:3000');
});
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.