আপনি একাধিক ভাষা জিজ্ঞাসার দুটি কার্যকর উপায় বর্ণনা করেছেন। হয় ভাল কাজ করা উচিত। আমি আমার নিজের কোডের জন্য সুস্পষ্ট ভাষা অনুরোধ পরামিতিটি বেছে নেব।
টিএল; ডিআর ব্যাকস্টোরি
একটি স্বীকৃত-ভাষা শিরোনাম আছে । নোট, Accept
না Accepted
। এটি HTTP সামগ্রী আলোচনার একটি স্ট্যান্ডার্ড অংশ। প্রতিক্রিয়াটি সাধারণত একটি সামগ্রী-ভাষার শিরোনাম সেট করে ।
Accept-Language
বিকল্পগুলির একটি সেট প্রদান করে উদ্বোধনী বিড; Content-Language
কোনটি ভাষা বেছে নেওয়া হয়েছে তা উল্লেখ করে রেজোলিউশন হয়। বেশিরভাগ Content-Language
উত্তরগুলি একটি ভাষা ফেরত দেয়, তবে প্রতিক্রিয়া ভাষাগুলির কমা-বিচ্ছিন্ন তালিকা সরবরাহ করার বিকল্প রয়েছে। সাধারণত এটি মিশ্র-সামগ্রী হবে, তবে এটি একাধিক বিচ্ছিন্ন বিকল্পগুলির সংকেত দিতে পারে না এমন কোনও কারণ নেই। আপনি যদি ক্লায়েন্টকে সমস্ত উপলব্ধ ভাষার জন্য অনুরোধ করতে চান তবে ইতিমধ্যে একটি ওয়াইল্ডকার্ড অনুরোধ বিকল্প রয়েছে *
,।
সুতরাং ইতিমধ্যে আপনি ব্যবহার করতে পারেন এমন একটি HTTP শিরোনাম প্রক্রিয়া রয়েছে। তবে, সাবধান যে আপনি একটি আলোচনার প্রক্রিয়াটিকে পিগব্যাক করছেন যা প্রায়শই সম্ভাব্য বিকল্পগুলির একটি অ্যারে উপস্থাপন করে এবং একটি বিকল্প বিকল্প ফিরে পায়। আপনি "এই বিকল্পগুলির একটি তালিকা এখানে বোধগম্যভাবে স্থানান্তরিত করতে চাই, আমাকে সবগুলি দিন!" যদি আপনি এটির সাথে ঠিক থাকেন তবে আপনার সমাধান হবে।
তবে, HTTP শিরোনামগুলিতে REST এপিআই পরামিতিগুলি সিগন্যাল করার উপযুক্ততা সম্পর্কে যথেষ্ট বিতর্ক রয়েছে। এটি কিছুটা ওয়েস্টর বা ওয়েট্রেস উপস্থিত হওয়ার অপেক্ষা না করে কোনও রেস্তোঁরা enteringুকে আপনার হোস্ট বা মাট্রে ডি'র কাছে আপনার বিশদ অর্ডার ঝাপসা করার মতো। এটি কাজ করতে পারে, এবং ভালভাবে কাজ করতে পারে যেমন হোস্টের নির্দেশিত আদেশটি পানীয় বা অ্যাপেটিজারগুলির সাথে সম্পর্কিত হয় - হোস্টটি দ্রুত যা দেখতে পারে বা আপনার সার্ভারে দ্রুত যোগাযোগ করতে পারে communicate তবে এটিকে প্রোটোকল লঙ্ঘন হিসাবেও দেখা যায়, ভুল স্তর / স্তরে বা ভুল প্লেয়ারকে সম্বোধন করা।
দ্বিতীয় বিকল্পটি হ'ল সুস্পষ্ট অনুরোধের পরামিতি। আপনি পরামর্শ দিন ?all_languages=true
। এটি অত্যধিক নির্দিষ্ট বলে মনে হয়। lang=en,fr,es
(একাধিক তালিকাভুক্ত ভাষাগুলির অনুমতি দিন) lang=*
বা lang=all
(প্রতিটি উপলব্ধ ভাষা নির্দিষ্ট করুন ) এর মতো কিছু আরও সাধারণ বলে মনে হচ্ছে। এটি URL বা অনুরোধ সংস্থায় প্রকাশ করা যেতে পারে।
যে কোনও উপায়ে, আপনার বহু-ভাষাগুলি প্রতিক্রিয়া সহজেই ফিরে আসা জেএসএন পে-লোডে এনকোড করা যায়:
[ { "lang": "en", "content": "As Gregor Samsa awoke one morning..." },
{ "lang": "de", "content": "Als Gregor Samsa eines Morgens..." },
...
]
শেষ পর্যন্ত, এই পদ্ধতির কোনওটিই আপনার পক্ষে ভালভাবে কাজ করা উচিত। হয় একটি "সামঞ্জস্যপূর্ণ, সুসংগঠিত RESTful API নকশা" হিসাবে দেখা যেতে পারে। যার দৃ better় সংকল্পটি বেশিরভাগই পিগিগ্যাব্যাকিংয়ের যথাযথতার প্রতি আপনার মনোভাবের উপর নির্ভর করে (এবং এইচটিপিপি বিষয়বস্তু আলোচনার শিরোনামের সামান্যতম পরিবর্তনের জন্য)।
আমার নিজের পছন্দটি হ'ল একটি এপিআই অনুরোধের সমান অংশ হিসাবে শিরোনাম এবং অন্যান্য পরামিতিগুলিকে অন্তর্নিহিত করা নয় । সুস্পষ্ট lang
বা language
পরামিতি আমার কাছে পরিষ্কার মনে হচ্ছে। কিন্তু যেহেতু HTTP- র ক্রিয়া (যেমন GET
, PUT
, POST
, PATCH
, ...), হেডার অংশ এবং সমালোচনামূলক থেকে / অনুরোধের ব্যাখ্যার সাথে intermixed, আমি সত্য বলিয়া স্বীকার করা খাম বনাম বিষয়বস্তু পার্থক্য একটি বিট কৃত্রিম এবং ঝাপসা হয়। বেশিরভাগ ডিজাইনের সিদ্ধান্তের মতোই খাঁটি বিশেষজ্ঞরা এর আলাদাভাবে উত্তর দেন এবং ওয়াইএমএমভি।