কিভাবে node.js একটি HTTP POST অনুরোধ করতে?




httprequest (12)

Google Compiler API এ POST অনুরোধ করার জন্য node.js ব্যবহার করার উদাহরণ এখানে দেওয়া হল:

// We need this to build our post string
var querystring = require('querystring');
var http = require('http');
var fs = require('fs');

function PostCode(codestring) {
  // Build the post string from an object
  var post_data = querystring.stringify({
      'compilation_level' : 'ADVANCED_OPTIMIZATIONS',
      'output_format': 'json',
      'output_info': 'compiled_code',
        'warning_level' : 'QUIET',
        'js_code' : codestring
  });

  // An object of options to indicate where to post to
  var post_options = {
      host: 'closure-compiler.appspot.com',
      port: '80',
      path: '/compile',
      method: 'POST',
      headers: {
          'Content-Type': 'application/x-www-form-urlencoded',
          'Content-Length': Buffer.byteLength(post_data)
      }
  };

  // Set up the request
  var post_req = http.request(post_options, function(res) {
      res.setEncoding('utf8');
      res.on('data', function (chunk) {
          console.log('Response: ' + chunk);
      });
  });

  // post the data
  post_req.write(post_data);
  post_req.end();

}

// This is an async file read
fs.readFile('LinkedList.js', 'utf-8', function (err, data) {
  if (err) {
    // If this were just a small part of the application, you would
    // want to handle this differently, maybe throwing an exception
    // for the caller to handle. Since the file is absolutely essential
    // to the program's functionality, we're going to exit with a fatal
    // error instead.
    console.log("FATAL An error occurred trying to read in the file: " + err);
    process.exit(-2);
  }
  // Make sure there's data before we post it
  if(data) {
    PostCode(data);
  }
  else {
    console.log("No data to post");
    process.exit(-1);
  }
});

হার্ডডোডেড স্ট্রিংয়ের পরিবর্তে ফাইল থেকে ডেটা কীভাবে পোস্ট করবেন তা দেখানোর জন্য আমি কোডটি আপডেট করেছি। এটি সফলভাবে পড়ার পরে আসল কোডটি পোস্ট করে, এটি অর্জন করতে async fs.readFile কমান্ড ব্যবহার করে। যদি কোন ত্রুটি থাকে, এটি নিক্ষেপ করা হয় এবং যদি কোনও তথ্য না থাকে তবে ব্যর্থতা নির্দেশ করার জন্য প্রক্রিয়া নেতিবাচক মান ছাড়িয়ে যায়।

আমি কিভাবে node.js এ তথ্য সহ একটি বহির্মুখী HTTP POST অনুরোধ করতে পারি?


অনুরোধ করার জন্য আমি এটি ব্যবহার করার সবচেয়ে সহজ উপায়: 'অনুরোধ' মডিউল ব্যবহার করে।

'অনুরোধ' মডিউল ইনস্টল করার কমান্ড:

$ npm install request

উদাহরণ কোড:

var request = require('request')

var options = {
  method: 'post',
  body: postData, // Javascript object
  json: true, // Use,If you are sending JSON data
  url: url,
  headers: {
    // Specify headers, If any
  }
}

request(options, function (err, res, body) {
  if (err) {
    console.log('Error :', err)
    return
  }
  console.log(' Body :', body)

});

আপনি অনুরোধ করতে Node.js এর অন্তর্নির্মিত 'http' মডিউলটি ব্যবহার করতে পারেন।


আপনি request লাইব্রেরি ব্যবহার করলে এটি অনেক সহজ হয়ে যায়।

var request = require('request');

request.post(
    'http://www.yoursite.com/formpage',
    { json: { key: 'value' } },
    function (error, response, body) {
        if (!error && response.statusCode == 200) {
            console.log(body)
        }
    }
);

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

অনুরোধ ব্যবহার কমান্ড npm install request


আপনি অনুরোধ লাইব্রেরি ব্যবহার করতে পারেন। https://www.npmjs.com/package/request

var request = require('request');

JSON ডেটা পোস্ট করতে:

var myJSONObject = { ... };
request({
    url: "http://josiahchoi.com/myjson",
    method: "POST",
    json: true,   // <--Very important!!!
    body: myJSONObject
}, function (error, response, body){
    console.log(response);
});

এক্সএমএল তথ্য পোস্ট করার জন্য:

var myXMLText = '<xml>...........</xml>'
request({
    url: "http://josiahchoi.com/myjson",
    method: "POST",
    headers: {
        "content-type": "application/xml",  // <--Very important!!!
    },
    body: myXMLText
}, function (error, response, body){
    console.log(response);
});

আমি অতিপ্রাকৃত সরলতা পছন্দ করি ( https://github.com/visionmedia/superagent )। নোড এবং ব্রাউজার উভয় একই api।

2018 সম্পাদনা: সম্প্রতি, যদিও আমি নোড-ফেচ ( https://www.npmjs.com/package/node-fetch ) ব্যবহার করে চলেছি, যা একটি অ্যাপি রয়েছে যা ব্রাউজার থেকে মিলিত হয়।


আমি উৎপাদন উদ্দেশ্যে Restler এবং Needle ব্যবহার। তারা উভয় নেটিভ httprequest চেয়ে অনেক বেশি শক্তিশালী। মৌলিক প্রমাণীকরণ, বিশেষ শিরোনাম এন্ট্রি বা এমনকি ফাইল আপলোড / ডাউনলোড করার জন্য অনুরোধ করা সম্ভব।

পোষ্ট / অপারেশন পাওয়ার জন্য, তারা httprequest ব্যবহার করে কাঁচা AJAX কলগুলির তুলনায় ব্যবহার করা আরও সহজ।

needle.post('https://my.app.com/endpoint', {foo:'bar'}, 
    function(err, resp, body){
        console.log(body);
});

একটি অক্ষর পোষ্ট অনুরোধের অন্য অক্ষর উদাহরণ পোস্ট করা যা অতিরিক্ত কনফিগারেশন বিকল্প এবং কাস্টম হেডার ব্যবহার করে।

var postData = {
  email: "[email protected]",
  password: "password"
};

let axiosConfig = {
  headers: {
      'Content-Type': 'application/json;charset=UTF-8',
      "Access-Control-Allow-Origin": "*",
  }
};

axios.post('http://<host>:<port>/<path>', postData, axiosConfig)
.then((res) => {
  console.log("RESPONSE RECEIVED: ", res);
})
.catch((err) => {
  console.log("AXIOS ERROR: ", err);
})


পরবর্তী বছরগুলিতে এখানে আসার জন্য। এখন বিভিন্ন লাইব্রেরিগুলির বিভিন্ন ধরণের রয়েছে যা কমপক্ষে কোডিংয়ের মাধ্যমে এটি সম্পাদন করতে পারে। আমি HTTP অনুরোধের জন্য মার্জিত হালকা ওজন লাইব্রেরি পছন্দ করি যতক্ষন না আপনি একেবারে নিম্ন স্তরের HTTP স্টাফগুলির নিয়ন্ত্রণের প্রয়োজন হয়।

এক লাইব্রেরী Unirest

এটি ইনস্টল করার জন্য, npm ব্যবহার করুন।
$ npm install unirest

এবং Hello, World! সম্মুখের Hello, World! উদাহরণস্বরূপ যে সবাই অভ্যস্ত হয়।

var unirest = require('unirest');

unirest.post('http://example.com/helloworld')
.header('Accept', 'application/json')
.send({ "Hello": "World!" })
.end(function (response) {
  console.log(response.body);
});


অতিরিক্ত:
অনেক মানুষ request ব্যবহারের পরামর্শ দিচ্ছে https://www.npmjs.com/package/request

এটি Unirest request লাইব্রেরি ব্যবহার করে দৃশ্যের পিছনে যে লক্ষনীয় মূল্য হওয়া উচিত।

Unirest সরাসরি অনুরোধ বস্তু অ্যাক্সেস করার জন্য পদ্ধতি উপলব্ধ করা হয়।

উদাহরণ:

var Request = unirest.get('http://mockbin.com/request');

সহজ এবং নির্ভরতা মুক্ত। একটি প্রতিশ্রুতি ব্যবহার করে যাতে আপনি ফলাফল অপেক্ষা করতে পারেন। এটি প্রতিক্রিয়া শরীরটি ফেরত দেয় এবং প্রতিক্রিয়া স্থিতি কোড পরীক্ষা করে না।

const https = require('https');

function httpsPost({body, ...options}) {
    return new Promise((resolve,reject) => {
        const req = https.request({
            method: 'POST',
            ...options,
        }, res => {
            const chunks = [];
            res.on('data', data => chunks.push(data))
            res.on('end', () => {
                let body = Buffer.concat(chunks);
                switch(res.headers['content-type']) {
                    case 'application/json':
                        body = JSON.parse(body);
                        break;
                }
                resolve(body)
            })
        })
        req.on('error',reject);
        if(body) {
            req.write(body);
        }
        req.end();
    })
}

ব্যবহার:

const res = await httpsPost({
    hostname: 'sentry.io',
    path: `/api/0/organizations/org/releases/${changesetId}/deploys/`,
    headers: {
        'Authorization': `Bearer ${process.env.SENTRY_AUTH_TOKEN}`,
        'Content-Type': 'application/json',
    },
    body: JSON.stringify({
        environment: isLive ? 'production' : 'demo',
    })
})

https://www.npmjs.com/package/request নির্ভরতা ব্যবহার করে।

সহজ সমাধান:

 import request from 'request'
 var data = {
        "host":"127.1.1.1",
        "port":9008
    }

request.post( baseUrl + '/peers/connect',
        {
            json: data,  // your payload data placed here
            headers: {
                'X-Api-Key': 'dajzmj6gfuzmbfnhamsbuxivc', // if authentication needed
                'Content-Type': 'application/json' 
            }
        }, function (error, response, body) {
            if (error) {
                callback(error, null)
            } else {
                callback(error, response.body)
            }
        });

বিশ্রাম / JSON অনুরোধ পোস্ট করুন
আমরা সহজেই অনুরোধ প্যাকেজ ব্যবহার করতে পারি এবং জেসন ভেরিয়েবলে পাঠানোর মানগুলি সংরক্ষণ করতে পারি।

প্রথমে npm ইনস্টলেশনের অনুরোধ - save করে আপনার কনসোলের প্রয়োজনীয় প্যাকেজ ইনস্টল করুন

var request = require('request');

    var options={
                'key':'28',
                'key1':'value',
                'key2':'value'
                }

    request({
             url:"http://dev.api.ean.com/ean-services/rs/hotel/v3/ping?                      
                 minorRev="+options.key+
                 "&cid="+options.key1+
                 "&apiKey="+options.key2,
             method:"POST",
             json:true},function(error,response,body){
                     console.log(body)
               }
    );

let request = require('request');
let jsonObj = {};
request({
    url: "https://myapii.com/sendJsonData",
    method: "POST",
    json: true,
    body: jsonObj
    }, function (error, resp, body){
       console.log(resp);
});

অথবা আপনি অন্য লাইব্রেরি করতে পারেন:

let axios = require("axios");
let jsonObj = {};

const myJsonAPI = axios.create({
   baseURL: 'https://myapii.com',
   timeout: 120*1000
});

let response = await myJsonAPI.post("sendJsonData",jsonobj).catch(e=>{
    res.json(e);
});
console.log(response);




httprequest