অক্ষ এবং আনার মধ্যে পার্থক্য কী?


182

আমি আনয়ন ব্যবহার করে ওয়েব পরিষেবা কল করছি কিন্তু অক্ষরগুলির সাহায্যে আমি এটি করতে পারি। সুতরাং আমি এখন বিভ্রান্ত। আমি কি অক্ষর বা আনতে হবে?


উত্তর:


164

আনয়ন এবং অ্যাকজিওস কার্যক্ষমতায় খুব একই রকম, তবে আরও পিছনের সামঞ্জস্যের জন্য অ্যাক্সিয়োস আরও ভাল কাজ করে বলে মনে হচ্ছে (আইই 11 তে আনতে হবে উদাহরণস্বরূপ, এই পোস্টটি দেখুন )

এছাড়াও, আপনি যদি জেএসওন অনুরোধগুলির সাথে কাজ করেন তবে নীচে কিছু পার্থক্য রয়েছে যার সাথে আমি হোঁচট খেয়েছি।

JSON পোস্টের অনুরোধটি আনুন

let url = 'https://someurl.com';
let options = {
            method: 'POST',
            mode: 'cors',
            headers: {
                'Accept': 'application/json',
                'Content-Type': 'application/json;charset=UTF-8'
            },
            body: JSON.stringify({
                property_one: value_one,
                property_two: value_two
            })
        };
let response = await fetch(url, options);
let responseOK = response && response.ok;
if (responseOK) {
    let data = await response.json();
    // do something with data
}

এক্সিয়াস জেএসওএন পোস্টের অনুরোধ

let url = 'https://someurl.com';
let options = {
            method: 'POST',
            url: url,
            headers: {
                'Accept': 'application/json',
                'Content-Type': 'application/json;charset=UTF-8'
            },
            data: {
                property_one: value_one,
                property_two: value_two
            }
        };
let response = await axios(options);
let responseOK = response && response.status === 200 && response.statusText === 'OK';
if (responseOK) {
    let data = await response.data;
    // do something with data
}

তাই:

  • আনার বডি = অ্যাক্সিয়োর ডেটা
  • আনার শরীরে স্ট্রিংফাই করতে হবে, এক্সিয়াসের ডেটাতে অবজেক্টটি রয়েছে
  • পান কোন url রয়েছে অনুরোধ বস্তু, Axios url রয়েছে অনুরোধ বস্তু
  • আনার অনুরোধ ফাংশনটিতে ইউআরএলটিকে প্যারামিটার হিসাবে অন্তর্ভুক্ত করা হয় , অক্ষের অনুরোধ ফাংশনটি ইউআরএলটিকে প্যারামিটার হিসাবে অন্তর্ভুক্ত করে না
  • পান অনুরোধ ঠিক যখন প্রতিক্রিয়া বস্তু রয়েছে ঠিক সম্পত্তি , Axios অনুরোধ ঠিক যখন অবস্থা 200 এবং statusText 'ওকে' হয়
  • জসন বস্তুর প্রতিক্রিয়া পেতে: আনার ক্ষেত্রে রেসপন্স অবজেক্টে জেসন () ফাংশনটি কল করুন, এক্সিসে রেসপন্স অবজেক্টের ডেটা সম্পত্তি পাবেন ।

আশাকরি এটা সাহায্য করবে.


এখানে আরও প্রশ্ন। একবার প্রতিক্রিয়াওক সত্য হয়ে গেলে, আমাদের কী প্রতিক্রিয়াতে স্ট্যাটাসটি পরীক্ষা করা দরকার? ডেটা যদি স্ট্যাটাস সরবরাহ করে থাকে? ধন্যবাদ
ইয়াং ওয়াং

1
Axios request is ok when status is 200 and statusText is 'OK' 201 বা 204 এর মতো 2xx রেঞ্জের অন্যান্য httpstatus সম্পর্কে কী বলা যায়?
লিওনব্লায়

46

তারা হ'ল এইচটিটিপি অনুরোধ লাইব্রেরি ...

আমি একই সন্দেহের সাথে শেষ করছি তবে এই পোস্টের টেবিলটি আমাকে সাথে করে দেয় isomorphic-fetch। যা fetchতবে নোডজেএস-এর সাথে কাজ করে।

http://andrewhfarmer.com/ajax-libraries/


উপরের লিঙ্কটি মারা গেছে একই টেবিলটি এখানে আছে: https://www.javascripttstuff.com/ajax-libraries/

বা এখানে: এখানে চিত্র বর্ণনা লিখুন


6
তবুও আমি অক্ষরেখাগুলি উপস্থাপনের সুবিধা খুঁজে পাচ্ছি না। আপনারা কি ধারণা করতে পারেন কেন আমার অ্যাক্সেস নিয়ে যেতে হবে?
গোরখ নাথ

4
আমি মনে করি আনয়ন একটি স্ট্যান্ডার্ড দেখুন fetch.spec.whatwg.org ... অক্ষের আরও বৈশিষ্ট্য থাকতে পারে কারণ এটি অনুসরণ করে না .... আমি মনে করি শেষ পর্যন্ত তারা বেসিকগুলি (এজাক্স HTTP অনুরোধ) করে তবে এটি নির্ভর করে আপনার যা দরকার তার উপর ... আমার ট্রান্সফর্মার লাগবে না ... সুতরাং একটি স্ট্যান্ডার্ড লাইব পাওয়া একজন প্রো ...
লুকাশ ক্যাটায়ামা

4
সচেতন হন যে টেবিলটি বিভ্রান্তিকর। এটি নেটিভfetch হিসাবে সংজ্ঞায়িত করেছে (এর অর্থ আপনি কেবল এটি ব্যবহার করতে পারেন - টেবিল উত্স অনুসারে কোনও গ্রন্থাগার অন্তর্ভুক্ত করার দরকার নেই ), যখন কিছু প্ল্যাটফর্মগুলিতে (বিশেষত আইআই এর সমস্ত সংস্করণে) বাস্তবায়ন করা হয় না , যার জন্য আপনাকে একটি সরবরাহ সরবরাহ করতে হবে বাহ্যিক পলিফিল যাইহোক। fetch
লুকা ফাগিওলি

3
@ জ্যাক 123 ফেচ দ্বারা উল্লিখিত পার্থক্যের সাথে যুক্ত করাও একটি বেসিক এজাক্স কার্যকারিতা সরবরাহ করে না timeout(যা খুব অদ্ভুত) এই বুনিয়াদি কার্যকারিতা বাস্তবায়নের জন্য আমাদের একটি পৃথক মডিউল ব্যবহার করতে হবে।
অপূর্ব জয়ন

2
@ লুকাসকাটাইম লিঙ্কটি ভাঙ্গা দেখা যাচ্ছে
ভ্যানসি-প্যান্ট

30

গিটহাবের মোজাব্রিস্কির মতে :

সামগ্রিকভাবে তারা খুব অনুরূপ। অ্যাক্সিসের কিছু সুবিধা:

  • ট্রান্সফর্মারস: একটি অনুরোধ করার আগে বা প্রতিক্রিয়া পাওয়ার পরে ডেটাতে ট্রান্সফর্মগুলি সম্পাদন করার অনুমতি দিন

  • ইন্টারসেপ্টর: আপনাকে অনুরোধ বা প্রতিক্রিয়া পুরোপুরি পরিবর্তন করতে দেয় (পাশাপাশি শিরোনাম)। এছাড়াও, একটি অনুরোধ করার আগে বা প্রতিশ্রুতি নিষ্পত্তি হওয়ার আগে অ্যাসিঙ্ক অপারেশনগুলি সম্পাদন করুন

  • অন্তর্নির্মিত এক্সএসআরএফ সুরক্ষা

দয়া করে ব্রাউজার সমর্থন অ্যাক্সিয়োস পরীক্ষা করুন

এখানে চিত্র বর্ণনা লিখুন

আমি মনে করি আপনার অক্ষ ব্যবহার করা উচিত।


4
একমত। অ্যাকজিওস ছোট ছোট এনফুট আমদানি যাতে ব্লাট খুব বেশি উদ্বেগ নয় - এক্সপ্রেস বা মঙ্গুসের মতো কোনও কিছুর বিপরীতে যেখানে প্যাকেজের আকার সম্পর্কে যদি কেউ কিছুটা উন্মাদ হয় তবে তারা উদ্বিগ্ন হতে পারে। :)
কোডফিনিটি

1
দয়া করে বৈধ সম্পাদনাগুলি প্রত্যাবর্তন করবেন না, বা এট্রিবিউশন ছাড়াই কন্টেন্ট অনুলিপি করুন।
jonrsharpe

9

ফেচ এপিআই এবং অ্যাক্সিয়াস এপিআইয়ের মধ্যে আরও একটি বড় পার্থক্য

  • পরিষেবা কর্মী ব্যবহার করার সময়, আপনি এইচটিটিপি অনুরোধটি বাধা দিতে চাইলেই আপনাকে আনতে হবে API ব্যবহার করতে
  • যাত্রা। পরিষেবা কর্মী ব্যবহার করে পিডব্লিউএতে ক্যাচিংয়ের সময় আপনি অ্যাক্সিয়ো এপিআই ব্যবহার করছেন তবে আপনি ক্যাশে সক্ষম হবেন না (এটি কেবল আনার এপিআই দিয়ে কাজ করে)

6
কেউ কি সত্যিই সত্য যাচাই করতে পারে? এটি 1 জন ব্যক্তি, তবে 9 টি উপবিষ্ট একমত বলে মনে হয়েছে তবে এ সম্পর্কে মন্তব্যগুলি দেখতে ভাল লাগবে (আমি সার্ভিস কর্মীর সাথে অক্ষর ব্যবহার করছি পিএএ অফলাইনে তাই আমি কেন জিজ্ঞাসা করছি
টম স্টিকেল

অবশ্যই, আমরা এ সম্পর্কে আরও কয়েকটি মন্তব্য করতে পারি তবে আমি অক্ষ ব্যবহার করার সময় ক্যাশে নিয়ে সমস্যার মুখোমুখি হয়েছিলাম এবং যখন আমি অক্ষগুলি প্রতিস্থাপন () এপিআই দিয়ে প্রতিস্থাপন করেছি তখন এটি সমাধান হয়ে গেছে
বৈভব বাচ্চাভ

1
এটি সঠিক বলে মনে হচ্ছে, তবে অদূর ভবিষ্যতে এটি সংশোধন করা হতে পারে: github.com/axios/axios/pull/2891
arkhz

7

অ্যাকজিওস হ'ল এককভাবে তৃতীয় পক্ষের প্যাকেজ যা এনপিএম ব্যবহার করে সহজেই একটি প্রতিক্রিয়া প্রকল্পে ইনস্টল করা যায়।

আপনি উল্লিখিত অন্য বিকল্পটি আনার ফাংশন। অ্যাকজিওস থেকে ভিন্ন, fetch()বেশিরভাগ আধুনিক ব্রাউজারে তৈরি। আনার সাথে আপনার তৃতীয় পক্ষের প্যাকেজ ইনস্টল করার দরকার নেই।

সুতরাং এটি fetch()আপনার উপর নির্ভর করে আপনি কীভাবে করছেন তা জানেন না বা কেবল এক্সিয়াসটি ব্যবহার করুন যা আমার মতে আরও সোজা।


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

5

তদতিরিক্ত ... আমি আমার পরীক্ষায় বিভিন্ন লিবাসের সাথে খেলছিলাম এবং তাদের 4XX অনুরোধগুলির পৃথক হ্যান্ডলিং লক্ষ্য করেছি। এই ক্ষেত্রে আমার পরীক্ষা 400 জবাব দিয়ে একটি জসন বস্তু দেয় returns 3 টি জনপ্রিয় লিবস এইভাবে প্রতিক্রিয়াটি পরিচালনা করে:

// request-promise-native
const body = request({ url: url, json: true })
const res = await t.throws(body);
console.log(res.error)


// node-fetch
const body = await fetch(url)
console.log(await body.json())


// Axios
const body = axios.get(url)
const res = await t.throws(body);
console.log(res.response.data)

আগ্রহের বিষয় যে request-promise-nativeএবং axios4xx প্রতিক্রিয়া উপর নিক্ষেপ করার সময় node-fetchনা। এছাড়াও fetchJSON পার্সিং জন্য একটি প্রতিশ্রুতি ব্যবহার করে।


1
@ বাইতুন এগুলি আমার কাছ থেকে চলছে ইউনিট পরীক্ষা চালানো যা (আমার মনে হয় আমি মোচা ব্যবহার করছিলাম) প্রায়শই .throwsনিক্ষিপ্ত ত্রুটিগুলি পরীক্ষা করার একটি পদ্ধতি থাকে। এই ক্ষেত্রে আমি আল 3 লিবস থেকে প্রত্যাখ্যান পরীক্ষা করেছিলাম এবং ফিরে আসা ডেটার মধ্যে পার্থক্য লক্ষ্য করেছি।
সাইবারওয়ম্ব্যাট

3

অক্ষের উপকারিতা:

  • ট্রান্সফর্মারস: অনুরোধ করার আগে বা প্রতিক্রিয়া পাওয়ার পরে ডেটাতে ট্রান্সফর্মগুলি সম্পাদন করার অনুমতি দিন
  • ইন্টারসেপ্টর: আপনাকে অনুরোধ বা প্রতিক্রিয়া পুরোপুরি পরিবর্তন করতে দেয় (পাশাপাশি শিরোনাম)। অনুরোধ করার আগে বা প্রতিশ্রুতি নিষ্পত্তির আগে অ্যাসিঙ্ক অপারেশনগুলিও সম্পাদন করুন
  • অন্তর্নির্মিত এক্সএসআরএফ সুরক্ষা

axiosওভারের সুবিধাfetch

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.