এক্সপ্রেস.জেএস-এ res.send এবং res.json এর মধ্যে পার্থক্য


200

উভয়ই ক্লায়েন্টকে প্রতিক্রিয়া জানাতে একই ক্রিয়াকলাপ সম্পাদন করে বলে মনে হয় res.sendএবং এর মধ্যে প্রকৃত পার্থক্য কী res.json


73
লোকেরা উত্তরগুলি পোস্ট করে কীভাবে গিথুবে গিয়ে উত্স কোডটি পড়ে তা একবার নোট করুন। এটি শিখতে এবং প্রতিষ্ঠিত করার জন্য একটি ভাল অভ্যাস। সত্য উত্স মধ্যে নিহিত।
পিটার লিয়নস

31
@ পিটারলাইন্সে আমি সম্মতি জানাই এটি একটি ভাল অভ্যাস, তবে আপনি কি বোঝাতে চেয়েছিলেন যে রাম প্রশ্ন জিজ্ঞাসা না করে উত্সটির দিকে নজর দেওয়া উচিত ছিল? এটি কি এই সাইটের উদ্দেশ্যটিকে পরাজিত করে না? একটি ভাল উত্স (উত্স!) উল্লেখ করে উত্তর সহ এই প্রশ্নের উপস্থিতি দরকারী।
লিনাসআর

3
হ্যাঁ, একজন মানুষকে মাছ এবং সমস্ত কিছু শিখিয়ে দিন।
পিটার লিয়নস

71
যখন আমাদের "আরটিএফএস" বলা হয় (উত্সটি পড়ুন) এর প্রকৃত অর্থ হ'ল ডক্সগুলি তাদের যা করা উচিত তা যোগাযোগ করতে ব্যর্থ। হ্যাঁ, উত্স থাকা আমাদের এটি যাচাই করার অনুমতি দেয় তবে অস্পষ্ট ক্ষেত্রে বাদে কারও কাছে যাওয়ার দরকার নেই। এই সমস্ত এক্সপ্রেস বৈশিষ্ট্যগুলি সত্যই দুর্দান্ত, তবে দস্তাবেজগুলি খুব কম হয়ে যায়। এসও এক্সপ্রেস বিষয়গুলি সম্পর্কে এমন প্রশ্নগুলিতে পূর্ণ যা জনগণ ডক্স থেকে বুঝতে পারে না (আমার ক্ষেত্রে ঘটে)।
হুয়ান ল্যানাস

3
কখনও কখনও পড়ার উত্স পর্যাপ্ত নয় এবং উত্তরগুলি থেকে একটি ভাল ব্যাখ্যা উত্থাপিত হতে পারে, এটি জড়িত ধারণার সেরা বোঝার বিষয়টি নিশ্চিত করবে। কিছু লোক সোজা উত্সটি পড়তে এবং বুঝতে পারত, তবে প্রাথমিকভাবে জাভাস্ক্রিপ্টের বন্ধুত্বপূর্ণ নয় এমন প্রাথমিকের কী হবে? চিন্তা করুন.
cram2208

উত্তর:


210

কোনও বস্তু বা অ্যারে পাস করার সময় পদ্ধতিগুলি অভিন্ন হয়, তবে res.json()অ-অবজেক্টগুলিকে রূপান্তরিত করে, যেমন nullএবং undefined, যা বৈধ JSON নয়।

পদ্ধতিটি অ্যাপ্লিকেশন সেটিংস json replacerএবং json spacesঅ্যাপ্লিকেশন সেটিংসও ব্যবহার করে , যাতে আপনি আরও বিকল্পের সাথে জেএসওএন ফর্ম্যাট করতে পারেন। এই বিকল্পগুলি যেমন সেট করা হয়:

app.set('json spaces', 2);
app.set('json replacer', replacer);

এবং এর JSON.stringify()মত একটি পাস :

JSON.stringify(value, replacer, spacing);
// value: object to format
// replacer: rules for transforming properties encountered during stringifying
// spacing: the number of spaces for indentation

res.json()প্রেরণ পদ্ধতিতে এই পদ্ধতিতে কোডটি নেই:

var app = this.app;
var replacer = app.get('json replacer');
var spaces = app.get('json spaces');
var body = JSON.stringify(obj, replacer, spaces);

পদ্ধতিটি শেষ পর্যন্ত res.send()শেষ হয়:

this.charset = this.charset || 'utf-8';
this.get('Content-Type') || this.set('Content-Type', 'application/json');

return this.send(body);

66

https://github.com/visionmedia/express/blob/ee228f7aea6448cf85cc052697f8d831dce785d5/lib/response.js#L174

res.jsonশেষ পর্যন্ত কল res.send, কিন্তু এটি আগে:

  • json spacesএবং json replacerঅ্যাপ্লিকেশন সেটিংস সম্মান করে
  • প্রতিক্রিয়াটি utf8 চার্সেট এবং অ্যাপ্লিকেশন / json সামগ্রী-প্রকারের নিশ্চিত করবে

16

পাঠানো শিরোনামগুলিতে সন্ধান করা হচ্ছে ...
পুনরায় বিক্রয় সামগ্রী সামগ্রী-প্রকার ব্যবহার করে: পাঠ্য / এইচটিএমএল
রেজ.জেসন সামগ্রী সামগ্রী প্রকার: অ্যাপ্লিকেশন / জেসন ব্যবহার করে


0

res.jsonযুক্তিটি JSON এ জোর করে। res.sendএকটি নন-জসন অবজেক্ট বা অ্যারে নেবে এবং অন্য ধরণের প্রেরণ করবে। উদাহরণ স্বরূপ:

এটি একটি জেএসএন নম্বর ফিরিয়ে দেবে।

res.json(100)

এটি একটি স্থিতি কোড ফেরত দেবে এবং সেন্ড স্ট্যাটাস ব্যবহার করার জন্য একটি সতর্কতা জারি করবে।

res.send(100)

যদি আপনার যুক্তিটি কোনও JSON অবজেক্ট বা অ্যারে না হয় (নাল, অপরিজ্ঞাত, বুলিয়ান, স্ট্রিং) এবং আপনি এটি JSON হিসাবে প্রেরণ করা হয়েছে তা নিশ্চিত করতে চান, ব্যবহার করুন res.json

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