কিভাবে নোড-ফেচ সহ Node.js-এ HTTP অনুরোধ করা যায়

Kibhabe Noda Pheca Saha Node Js E Http Anurodha Kara Yaya



এইচটিটিপি অনুরোধগুলি অত্যন্ত গুরুত্বপূর্ণ এবং বিশ্বব্যাপী ইউআরএলগুলি থেকে তথ্য আনার জন্য তৈরি করা হয় যেমন, একটি ওয়েবসাইট আহ্বান করা ইত্যাদি৷ এই পদ্ধতিটি কার্যকর হয় যখন কোনও ওয়েব অ্যাপ্লিকেশনকে সংস্থানগুলি অ্যাক্সেস করার জন্য ওয়েব সার্ভারের সাথে যোগাযোগ স্থাপন করতে হয়৷ উদাহরণস্বরূপ, একটি ওয়েব সার্ভার বা API এ ডেটা পুনরুদ্ধার করা বা পোস্ট করা।

জাভাস্ক্রিপ্টে, এটি 'এর মাধ্যমে করা যেতে পারে window.fetch() 'পদ্ধতি। যাইহোক, 'এ node.js ”, এই কার্যকারিতা একাধিক প্যাকেজ যেমন, নোড-ফেচ ইত্যাদি ব্যবহার করে অর্জন করা যেতে পারে।

এই ব্লগটি নিম্নলিখিত বিষয়বস্তুর ক্ষেত্রগুলি ব্যাখ্যা করে:







'নোড-ফেচ' কি?

দ্য ' নোড-আনয়ন ” একটি লাইটওয়েট মডিউলের সাথে মিলে যায় যা node.js এ ফেচ এপিআইকে অ্যাক্সেসযোগ্য করে তোলে। এই মডিউলটি ব্যবহারকারীদের ব্যবহার করার অনুমতি দেয় ' আনুন() 'node.js-এ পদ্ধতি যা বেশিরভাগ জাভাস্ক্রিপ্টের অনুরূপ' window.fetch() 'পদ্ধতি।



সিনট্যাক্স(আনয়ন() পদ্ধতি)



আনা ( url [ , বিকল্প ] ) ;

এই সিনট্যাক্সে:





  • ' url ” রিসোর্সের URL বোঝায় যেটি আনতে/পুনরুদ্ধার করতে হবে।
  • দ্য ' বিকল্প ' প্যারামিটারের প্রয়োজন হয় যখন 'ফেচ()' পদ্ধতি ব্যবহার করার প্রয়োজন হয় ' পাওয়া ' অনুরোধ।

ফেরত মূল্য

এই ফাংশনটি নিম্নরূপ একটি HTTP প্রতিক্রিয়া সম্পর্কিত তথ্য সমন্বিত একটি প্রতিক্রিয়া বস্তু পুনরুদ্ধার করে:



  • পাঠ্য: একটি স্ট্রিং আকারে প্রতিক্রিয়া বডি পুনরুদ্ধার করে।
  • শিরোনাম: প্রতিক্রিয়া হ্যান্ডলার সমন্বিত একটি বস্তু প্রদান করে।
  • json(): একটি JSON অবজেক্টে রেসপন্স বডি পার্স করে।
  • স্ট্যাটাসটেক্সট/স্ট্যাটাস: HTTP স্ট্যাটাস কোড সম্পর্কিত তথ্য রয়েছে।
  • ঠিক আছে: দেয়' সত্য ” যদি স্ট্যাটাসটি একটি 2xx স্ট্যাটাস কোড হয়।

নোড-ফেচ ব্যবহার করার জন্য পূর্বশর্ত

' দিয়ে শুরু করার আগে নিম্নলিখিত পূর্বশর্তগুলি বিবেচনা করতে হবে নোড-আনয়ন ”:

  • 17.5 সংস্করণের চেয়ে অন্তত বা সর্বশেষ ইনস্টল করা।
  • জাভাস্ক্রিপ্টের প্রাথমিক জ্ঞান।

নোড-ফেচ দিয়ে node.js-এ HTTP অনুরোধ কীভাবে করবেন?

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

কিভাবে নোড-ফেচ দিয়ে শুরু করবেন?

শুরু করার আগে বা ইনস্টল করার আগে ' নোড-আনয়ন ” মডিউল, নীচের প্রদত্ত কমান্ডের সাহায্যে একটি নোড প্রকল্প শুরু করুন:

npm init - এবং

এই কমান্ডটি কার্যকর করার ফলে একটি ' package.json ' বর্তমান ডিরেক্টরিতে ফাইল, নিম্নরূপ:

এখন, ইনস্টল করুন ' নোড-আনয়ন নিম্নলিখিত cmdlet ব্যবহার করে মডিউল:

npm ইন্সটল নোড - আনা

যাইহোক, একটি লক্ষ্য মডিউল সংস্করণ ইনস্টল করতে, নিম্নলিখিত কমান্ডটি ব্যবহার করুন:

npm ইন্সটল নোড - আনয়ন@ 2.0

এই ক্ষেত্রে, ' 2.0 মডিউলটির সংস্করণ ইনস্টল করা হবে।

বিঃদ্রঃ: উদাহরণগুলির সাথে এগিয়ে যাওয়ার আগে, একটি তৈরি করুন ' index.mjs কার্যক্ষেত্রে ফাইল যা কার্যকারিতা প্রয়োগ করতে ব্যবহৃত হবে।

উদাহরণ 1: নোড-ফেচের মাধ্যমে অনুরোধ পান পাঠান

দ্য ' নোড-আনয়ন ” মডিউলটি একটি ওয়েব সার্ভার থেকে পাঠ্য বা রেস্ট API এর মাধ্যমে ডেটা পেতে ব্যবহার করা যেতে পারে।

নীচের কোডের উদাহরণটি তৈরি করা হয়েছে ' index.mjs ” ফাইলটি ইউটিউব হোমপেজে একটি সহজ পান অনুরোধ করে:

আমদানি আনা থেকে 'নোড-আনয়ন' ;

আনা ( 'https://youtube.com' )

. তারপর ( res => res পাঠ্য ( ) )

. তারপর ( পাঠ্য => কনসোল লগ ( পাঠ্য ) ) ;

কোডের এই লাইনগুলিতে:

  • লোড করুন ' নোড-আনয়ন ” মডিউল করুন এবং নির্দিষ্ট URL এর মাধ্যমে YouTube-এর হোমপেজ পুনরুদ্ধার করুন যেখানে HTTP অনুরোধ করা হয়েছে।
  • এর পরে চেইন করুন ' তারপর() ' করা অনুরোধ থেকে প্রতিক্রিয়া এবং ডেটা পরিচালনা করার পদ্ধতি।
  • আগের 'তখন()' পদ্ধতিটি ইউটিউব সার্ভার থেকে প্রতিক্রিয়া পাওয়ার জন্য অপেক্ষা করার এবং এটিকে পাঠ্য বিন্যাসে রূপান্তরিত করার নির্দেশ করে।
  • পরবর্তী 'তখন()' পদ্ধতিটি পূর্ববর্তী রূপান্তরের ফলাফলের জন্য অপেক্ষাকে নির্দেশ করে এবং এটি কনসোলে প্রদর্শন করে।

আউটপুট

এখন, নিম্নলিখিত cmdlet এর মাধ্যমে কোডটি চালান:

নোড সূচক। mjs

উপরের কমান্ডটি কার্যকর করার ফলে কনসোলে প্রদর্শিত YouTube হোমপেজের সম্পূর্ণ HTML মার্কআপ পুনরুদ্ধার করা হয়:

উদাহরণ 2: Rest API থেকে JSON ডেটা পুনরুদ্ধার করুন

এই উদাহরণ ব্যবহার করে ' নোড-আনয়ন 'এর মাধ্যমে জাল তথ্য পেতে JSON প্লেসহোল্ডার RestAPI। এটা এমন যে ' আনুন() ' পদ্ধতিতে সার্ভারের URL রয়েছে এবং একটি প্রতিক্রিয়ার জন্য অপেক্ষা করছে:

আমদানি আনা থেকে 'নোড-আনয়ন' ;

আনা ( 'https://jsonplaceholder.typicode.com/users' )

. তারপর ( res => res json ( ) )

. তারপর ( json => {

কনসোল লগ ( 'প্রথম অ্যারে ব্যবহারকারী ->' ) ;

কনসোল লগ ( json [ 0 ] ) ;

কনসোল লগ ( 'প্রথম অ্যারের ব্যবহারকারীর নাম ->' ) ;

কনসোল লগ ( json [ 0 ] . নাম ) ;

} )

কোডের এই ব্লক অনুসারে, নিম্নলিখিত পদক্ষেপগুলি সম্পাদন করুন:

  • HTTPS বডিতে ব্যবহারকারীর ডেটা থাকা JSON ফর্ম্যাট করা ডেটা রয়েছে।
  • এর পরে, ' json() ” ফাংশনটি পৃথক এন্ট্রি এবং সংশ্লিষ্ট মানগুলিকে আহ্বান করতে প্রয়োগ করা হয়।

আউটপুট

কোডটি কার্যকর করতে নীচের cmdlet প্রয়োগ করুন:

নোড সূচক। mjs

উদাহরণ 3: নোড-ফেচের মাধ্যমে অনুরোধ পোস্ট করুন

দ্য ' নোড-আনয়ন ” মডিউলটি অনুরোধগুলি পুনরুদ্ধার করার পরিবর্তে পোস্ট করতেও ব্যবহার করা যেতে পারে। এটি 'এর মাধ্যমে অর্জন করা যেতে পারে আনুন() ” পদ্ধতি যা একটি সার্ভারে POST অনুরোধ করার জন্য একটি অতিরিক্ত প্যারামিটার অন্তর্ভুক্ত করে।

এই প্যারামিটারের সাথে বরাদ্দ করা যেতে পারে এমন একাধিক বিকল্প রয়েছে। যাইহোক, এই ক্ষেত্রে, ' পদ্ধতি ', ' শরীর ' এবং ' হেডার ' ব্যবহার করা হবে. নিম্নলিখিত প্রতিটি বিকল্পের বিবরণ দেওয়া হল:

  • দ্য ' পদ্ধতি ” বিকল্পটি এই পরিস্থিতিতে HTTP অনুরোধের ধরন যেমন, “POST” সেট করে।
  • দ্য ' শরীর ” বিকল্পটি অনুরোধের মূল অংশ নিয়ে গঠিত।
  • দ্য ' হেডার ' বিকল্পে সমস্ত প্রয়োজনীয় শিরোনাম রয়েছে যেমন, ' বিষয়বস্তুর প্রকার 'এই দৃশ্যে.

এখন, JSON স্থানধারকের “ সব ” এটি '476' হিসাবে userID সহ তালিকায় একটি নতুন আইটেম যুক্ত করে করা হয়:

আমদানি আনা থেকে 'নোড-আনয়ন' ;

সবকিছু যাক = {

ব্যবহারকারী আইডি : 476 ,

সাইট : 'এটি লিনাক্সহিন্ট' ,

সম্পন্ন : মিথ্যা

} ;

আনা ( 'https://jsonplaceholder.typicode.com/todos' , {

পদ্ধতি : 'পোস্ট' ,

শরীর : JSON। stringify ( সব ) ,

হেডার : { 'বিষয়বস্তুর প্রকার' : 'অ্যাপ্লিকেশন/জেসন' }

} ) . তারপর ( res => res json ( ) )

. তারপর ( json => কনসোল লগ ( json ) ) ;

এই কোডে:

  • প্রথমত, একটি টোডো অবজেক্ট তৈরি করুন এবং এটিকে বডিতে যুক্ত করার সময় এটিকে JSON এ রূপান্তর করুন।
  • এখন, একইভাবে, প্রয়োজনীয় বিকল্পগুলির সাথে ইউআরএল নির্দিষ্ট করুন ' আনুন() ' পদ্ধতির ঐচ্ছিক পরামিতি।
  • এর পরে, প্রয়োগ করুন ' JSON.stringify() ওয়েব সার্ভারে পাঠানো/প্রেরণ করার আগে অবজেক্টটিকে ফরম্যাটেড (JSON) স্ট্রিং-এ রূপান্তর করার পদ্ধতি।
  • এগিয়ে চলুন, সম্মিলিত বাস্তবায়ন করুন তারপর() ” পদ্ধতিগুলি যথাক্রমে উত্তরের জন্য অপেক্ষা করে, এটিকে JSON-এ রূপান্তরিত করে এবং কনসোলে লগিং করে ডেটা পুনরুদ্ধার করে৷

আউটপুট

কোডটি কার্যকর করতে নীচের প্রদত্ত কমান্ডটি চালান:

নোড সূচক। mjs

HTTP স্ট্যাটাস কোড কি?

পরবর্তী উদাহরণে যাওয়ার আগে, নিশ্চিত করুন যে প্রতিক্রিয়াটিতে একটি ' 3xx ” স্ট্যাটাস কোড, ক্লায়েন্টকে অতিরিক্ত পদক্ষেপ নিতে হবে। একইভাবে, ' 4xx ' কোডগুলি একটি অবৈধ অনুরোধ উপস্থাপন করে এবং ' 5xx ” কোডগুলি সার্ভারের ত্রুটির সাথে মিলে যায়৷

বিঃদ্রঃ: দ্য ' ধরা() ' ফাংশনটি উপরের আলোচিত কেসগুলির সাথে মোকাবিলা করতে পারে না যেহেতু সার্ভার যোগাযোগ একটি সুবিন্যস্ত পদ্ধতিতে হয়৷ অতএব, ব্যর্থ অনুরোধগুলি ত্রুটি ফিরিয়ে দেয় তা নিশ্চিত করার একটি কার্যকর পদ্ধতি হল এমন একটি ফাংশন সংজ্ঞায়িত করা যা সার্ভারের প্রতিক্রিয়ার HTTP স্থিতি বিশ্লেষণ করে।

উদাহরণ 4: ব্যতিক্রম এবং সীমাবদ্ধতার সাথে মোকাবিলা করা

প্রেরিত অনুরোধের সাথে বেশ কিছু সীমাবদ্ধতা বা ব্যতিক্রম থাকতে পারে যেমন, ইন্টারনেটের সমস্যা, “ আনুন() ' ফাংশন সীমাবদ্ধতা, ইত্যাদি ধরা() 'ফাংশন:

ফাংশন বিশ্লেষণ অবস্থা ( এক্স ) {

যদি ( এক্স. ঠিক আছে ) {

ফিরে এক্স

} অন্য {

নিক্ষেপ নতুন ত্রুটি ( `HTTP স্ট্যাটাস সাপেক্ষে -> $ { এক্স. অবস্থা } ( $ { এক্স. স্ট্যাটাস টেক্সট } ) ` ) ;

}

}

আনা ( 'https://jsonplaceholder.typicode.com/MissingResource' )

. তারপর ( স্থিতি বিশ্লেষণ করুন )

. তারপর ( এক্স => এক্স. json ( ) )

. তারপর ( json => কনসোল লগ ( json ) )

. ধরা ( ভুল => কনসোল লগ ( ভুল ) ) ;

কোডের এই স্নিপেটে:

  • প্রথমত, মুখোমুখি সীমাবদ্ধতার সাথে মোকাবিলা করার জন্য প্রতিক্রিয়া পার্স করার আগে বিবৃত প্যারামিটার সহ একটি ফাংশন সংজ্ঞায়িত করুন।
  • এখন, অন্তর্ভুক্ত করুন ' অন্যথায় যদি ” বিবৃতি সম্মুখীন ত্রুটি বা একটি কাস্টম সীমাবদ্ধতা নিক্ষেপ.
  • এর পরে, একইভাবে, প্রয়োগ করুন ' আনুন() ' পদ্ধতি এবং সম্পর্কিত 'তখন()' পদ্ধতিগুলি প্রতিক্রিয়ার জন্য অপেক্ষা করে, এটিকে JSON-এ রূপান্তরিত করে এবং কনসোলে লগ ইন করে ডেটা পুনরুদ্ধার করে৷
  • শেষ অবধি, রানটাইম ব্যতিক্রমগুলি 'টি স্থাপন করে মোকাবেলা করা যেতে পারে ধরা() প্রতিশ্রুতি চেইনের শেষে পদ্ধতি।

আউটপুট

শেষ অবধি, কোডটি চালানোর জন্য নীচের প্রদত্ত cmdlet চালান এবং মুখের ব্যতিক্রমগুলি ফেলে দিন:

নোড সূচক। mjs

'নোড-ফেচ' এর অন্যান্য ব্যবহারের ক্ষেত্রে

দ্য ' নোড-আনয়ন 'ও তৈরি করতে ব্যবহার করা যেতে পারে' API অনুরোধ 'বা' ওয়েব স্ক্র্যাপিং ” আসুন এই ব্যবহারের ক্ষেত্রে বিস্তারিত আলোচনা করি।

API অনুরোধ করার জন্য নোড-ফেচের ব্যবহার

একটি ব্যাক-এন্ড সোর্সের মাধ্যমে টার্গেট ডেটা আনার জন্য বিভিন্ন পরিস্থিতিতে API-এর প্রয়োজন হতে পারে। HTTP অনুরোধে প্রমাণীকরণের অনেক পদ্ধতি থাকতে পারে যেমন একটি API কী ব্যবহার করা যেখানে API প্রদানকারী একটি কী প্রদান করে যা শুধুমাত্র ব্যবহারকারীর জন্য সীমাবদ্ধ। APIকে রক্ষা করার আরেকটি পদ্ধতি হতে পারে 'এর মাধ্যমে মৌলিক প্রমাণীকরণ ” যেখানে API চালু করার জন্য একটি হেডার পাঠাতে হবে।

নিম্নোক্ত পদ্ধতির প্রদর্শন করা হল যেমন, পোস্ট অনুরোধে 'বেসিক প্রমাণীকরণ' এর সাহায্যে আনুন() 'পদ্ধতি:

( অ্যাসিঙ্ক ( ) => {

const এক্স = আনার জন্য অপেক্ষা করুন ( 'http://httpbin.org/post' , {

পদ্ধতি : 'পোস্ট' ,

হেডার : {

'অনুমোদন' : `মৌলিক $ { ভাই ( 'প্রবেশের গুপ্তসংকেত' ) } `

} ,

শরীর : JSON। stringify ( {

'চাবি' : 'মান'

} )

} ) ;

const ফলাফল = x অপেক্ষা করুন। পাঠ্য ( ) ;

কনসোল লগ ( ফলাফল ) ;

} ) ( ) ;

উপরের প্রদর্শনে, একটি শিরোনাম পাঠানো হয়েছে একটি ' বেস64 ' বিন্যাসের এনকোডেড স্ট্রিং ' প্রবেশের গুপ্তসংকেত

ওয়েব স্ক্র্যাপিংয়ের জন্য নোড-ফেচের ব্যবহার

' ওয়েব স্ক্র্যাপিং ” সেই কৌশলকে বোঝায় যেখানে সাইটগুলি থেকে ডেটা/কন্টেন্ট আনা হয় এবং পার্স করা হয়। এই পার্সিং 'এর মাধ্যমে অর্জন করা হয় চিয়ারিও 'লাইব্রেরি।

নীচে 'এর মাধ্যমে পৃষ্ঠার শিরোনাম আনার প্রদর্শনী রয়েছে আনুন() 'পদ্ধতি এবং' চিয়ারিও লাইব্রেরী:

const lib = প্রয়োজন ( 'উল্লাস' ) ;

( অ্যাসিঙ্ক ( ) => {

const এক্স = আনার জন্য অপেক্ষা করুন ( 'https://linuxhint.com/' ) ;

const এবং = x অপেক্ষা করুন। পাঠ্য ( ) ;

const $ = lib বোঝা ( এবং ) ;

কনসোল লগ ( $ ( 'শিরোনাম' ) . প্রথম ( ) . পাঠ্য ( ) ) ;

} ) ( ) ;

এই উদাহরণটি 'এর টাইল পুনরুদ্ধার করে লিনাক্স ' সাইটের শিরোনাম।

উপসংহার

node.js-এ HTTP অনুরোধগুলি নোড-ফেচের মাধ্যমে গেট রিকোয়েস্ট পাঠিয়ে, REST API থেকে JSON ডেটা পুনরুদ্ধার করে বা পোস্টের অনুরোধ পাঠানোর মাধ্যমে করা যেতে পারে। এছাড়াও, ব্যতিক্রম এবং সীমাবদ্ধতাগুলি 'এর মাধ্যমে কার্যকরভাবে পরিচালনা করা যেতে পারে ধরা() ' ফাংশন।