REST JSON এপিআই সার্ভার এবং ক্লায়েন্টকে আলাদা করুন? [বন্ধ]


371

আমি স্ক্র্যাচ থেকে একগুচ্ছ ওয়েব অ্যাপ তৈরি করতে চলেছি। ( ওভারভিউয়ের জন্য http://50pop.com/cod দেখুন ) প্রত্যেকের জন্য JSON REST এপিআই।

এছাড়াও, আমি ব্যাক-এন্ডে কাজ করতে পছন্দ করি, তাই আমি আমার স্বপ্নটি সম্পূর্ণরূপে এপিআইতে রাখার এবং যে ওয়েবসাইট, আইফোন, অ্যান্ড্রয়েড বা অন্য অ্যাপ্লিকেশন হোক না কেন, অন্য কাউকে নিয়োগের জন্য ফ্রন্ট-এন্ড ইউআই করার জন্য নিযুক্ত করি day

আমার কোন পদ্ধতিটি গ্রহণ করা উচিত দয়া করে আমাকে সিদ্ধান্ত নিতে সহায়তা করুন:

কারাগারে একসাথে

খুব মানসম্পন্ন রেলস-ওয়েব অ্যাপ্লিকেশন তৈরি করুন। নিয়ন্ত্রকটিতে, জেএসএন বা এইচটিএমএল উভয়কে পরিবেশন করতে, প্রতিক্রিয়া_বিহীন স্যুইচটি করুন। JSON প্রতিক্রিয়াটি তখন আমার এপিআই।

প্রো: নজির প্রচুর। দুর্দান্ত মান এবং এইভাবে জিনিসগুলি করার অনেক উদাহরণ।

কন: অগত্যা API অ্যাপটি ওয়েব অ্যাপের মতো হওয়া চাই না। / তারপর প্রতিক্রিয়া_উইচের সাথে স্যুইচ পদ্ধতির সাথে পছন্দ করুন না। দুটি খুব আলাদা জিনিস মিশ্রিত করা হয় (UI + API)।

রেস্ট সার্ভার + জাভাস্ক্রিপ্ট-ভারী ক্লায়েন্ট

একটি JSON- কেবলমাত্র REST এপিআই সার্ভার তৈরি করুন। ব্রাউজারে টেম্পলেট প্রদর্শন করে সরাসরি এপিআইতে অ্যাক্সেস পেতে ক্লায়েন্ট-সাইড জাভাস্ক্রিপ্টের জন্য ব্যাকবোন বা এমবার.জে ব্যবহার করুন।

প্রো: আমি এপিআই এবং ক্লায়েন্টের বিচ্ছেদ পছন্দ করি। স্মার্ট লোকেরা বলে যে এটিই যেতে হবে। তাত্ত্বিকভাবে দুর্দান্ত। উত্তেজনাপূর্ণ এবং উত্তেজনাপূর্ণ বলে মনে হচ্ছে।

কন: বেশি নজির নেই। এর বেশিরভাগ উদাহরণ ভালভাবে করা হয়নি। সর্বজনীন উদাহরণ (টুইটার.কম) স্বাচ্ছন্দ্য বোধ করে এবং এমনকি এই পদ্ধতির থেকে সরে চলেছে।

রেস্ট সার্ভার + সার্ভার-সাইড HTML ক্লায়েন্ট

একটি JSON- কেবলমাত্র REST এপিআই সার্ভার তৈরি করুন। একটি বেসিক এইচটিএমএল ওয়েবসাইট ক্লায়েন্ট তৈরি করুন, এটি কেবলমাত্র REST এপিআইতে অ্যাক্সেস করে। কম ক্লায়েন্ট সাইড জাভাস্ক্রিপ্ট।

প্রো: আমি এপিআই এবং ক্লায়েন্টের বিচ্ছেদ পছন্দ করি। তবে সরল এইচটিএমএল 5 পরিবেশন করা বেশ বোকা এবং ক্লায়েন্ট-নিবিড় নয়।

কন: বেশি নজির নেই। এর বেশিরভাগ উদাহরণ ভালভাবে করা হয়নি। ফ্রেমওয়ার্কগুলিও এটিকে সমর্থন করে না। কীভাবে এটি ব্যবহার করা যায় তা নিশ্চিত নয়।

বিশেষত কেবল তাত্ত্বিক নয়, অভিজ্ঞতার পরামর্শ অনুসন্ধান করা।


50
আমরা সাধারণত অনুমান করি যে অনুমানমূলক, ধারণাগত হোয়াইটবোর্ডের প্রশ্নগুলি প্রোগ্রামার্স.স্ট্যাক্কেঞ্জেন.কম.তে যান যখন স্ট্যাক ওভারফ্লোতে এখানে প্রশ্নগুলির আসল উত্স কোডটি 99% সময় ধারণ করে। তবে, এটি একটি ভাল জিজ্ঞাসিত প্রশ্ন এবং আমি আপনার কাজকে ভালবাসি, সুতরাং এটি আপাতত ধূসর অঞ্চলে পড়তে পারে।
জেফ আতউড

2
যারা বিকল্প 2 থেকে সরে যাচ্ছেন তাদের জন্য কি কারও কাছে কিছু উদাহরণ / উত্স রয়েছে (তাদের কারণগুলি বোঝার জন্য)?
ভেক্টর লোপেজ গার্সিয়া

12
@ ফ্রন্টক মূলত অনেকগুলি সংস্থাগুলি (টুইটারের মতো) জাভাস্ক্রিপ্ট ক্লায়েন্টগুলি করার মূল কারণটি ছিল কারণ তারা ভেবেছিল এটি দ্রুততর হবে। এখন, তারা বুঝতে পারে যে এটি আসলে ধীর। দেখুন engineering.twitter.com/2012/05/... এবং openmymind.net/2012/5/30/Client-Side-vs-Server-Side-Rendering
মোশে কাট্স

1
উপরের লিঙ্কগুলিতে মন্তব্য পড়ুন। নিবন্ধটির অনেক অনুমান যুক্তি এবং অভিজ্ঞতা দিয়ে খণ্ডন করা হয়।
রিকলসিন

1
আজকাল আপনি jsonapi.org স্পেস অনুসরণ করে একটি JSON এপিআই ব্যাকএন্ড বানাতে চান ... :)
আসকার

উত্তর:


136

অপার , আমরা # 2 বিকল্প গভীর সর্বস্বান্ত এবং ছাত্র হাজার হাজার এটি ঘূর্ণিত গেছেন। আমাদের সার্ভারটি একটি JSON REST এপিআই (স্কেলা + মঙ্গোডিবি), এবং আমাদের ক্লায়েন্ট কোডগুলির সমস্ত ক্লাউডফ্রন্টের বাইরে সরাসরি পরিবেশন করা হয় (যেমন: www.boundless.com কেবল ক্লাউডফ্রন্টের জন্য একটি উপনাম)।

পেশাদাররা:

  • কাটিং-এজ / উত্তেজনাপূর্ণ
  • আপনার হরির জন্য প্রচুর ধাক্কা: এপিআই আপনাকে আপনার নিজের ওয়েব ক্লায়েন্ট, মোবাইল ক্লায়েন্ট, তৃতীয় পক্ষের অ্যাক্সেস ইত্যাদির জন্য ভিত্তি দেয়
  • অত্যন্ত দ্রুত সাইট লোডিং / পৃষ্ঠা রূপান্তর

কনস:

  • এসইও বান্ধব নয় / আরও অনেক কাজ ছাড়াই প্রস্তুত।
  • শীর্ষস্থানীয় ওয়েব ফ্রন্ট-এন্ড লোক প্রয়োজন যারা who০% জাভাস্ক্রিপ্ট এবং এর অর্থ কী এমন সাইটের অভিজ্ঞতার বাস্তবতা মোকাবেলায় প্রস্তুত ready

আমি মনে করি এটি সমস্ত ওয়েব-অ্যাপের ভবিষ্যত।

ওয়েব ফ্রন্ট এন্ড লোকদের জন্য কিছু চিন্তাভাবনা (যা এখানে নতুন নেস / চ্যালেঞ্জকে এই আর্কিটেকচার দেওয়া হয়েছে):

  • CoffeeScript। উচ্চ-মানের কোড উত্পাদন করা অনেক সহজ।
  • মেরুদন্ড. আপনার যুক্তি এবং সক্রিয় সম্প্রদায়কে সংগঠিত করার দুর্দান্ত উপায়।
  • HAMLC। হামল + কফিস্ক্রিপ্ট টেম্পলেটগুলি => জেএস।
  • Sass

আমরা আমাদের ফ্রন্ট-এন্ড বিকাশের জন্য 'স্পার' (সিঙ্গল পেজ অ্যাপ রকেটশিপ) নামে একটি সুরক্ষা তৈরি করেছি যা কার্যকরভাবে একক পৃষ্ঠার অ্যাপ্লিকেশন বিকাশের জন্য রেল থেকে প্রাপ্ত সম্পদ পাইপলাইন effectively আমরা আমাদের গিথুব পৃষ্ঠায় পরবর্তী কয়েক সপ্তাহের মধ্যে ওপেন সোর্সিং করব , কিভাবে এটি ব্যবহার করতে হবে এবং সামগ্রিক আর্কিটেকচার আরও বিস্তারিতভাবে ব্যাখ্যা করার জন্য একটি ব্লগ পোস্ট সহ।

হালনাগাদ:

ব্যাকবোন নিয়ে মানুষের উদ্বেগের প্রতি শ্রদ্ধা সহ আমি মনে করি তারা ওভার-রেটেড। ব্যাকবোন একটি গভীর কাঠামোর চেয়ে অনেক বেশি সাংগঠনিক নীতি। টুইটারের সাইটটি নিজেই জাভাস্ক্রিপ্টের এক বিশাল জন্তু যা প্রতিটি কোণার কেসকে লক্ষ লক্ষ ব্যবহারকারী এবং লেগ্যাসি ব্রাউজারগুলিতে জুড়েছে, যখন রিয়েল-টাইম টুইটগুলি লোড করার সময়, আবর্জনা সংগ্রহ করে, প্রচুর মাল্টিমিডিয়া ইত্যাদি প্রদর্শন করে থাকে আমি সমস্ত 'খাঁটি' জেএস সাইটগুলি Of দেখা গেছে, টুইটারটি বিজোড় এক। জেএস এর মাধ্যমে অনেক চিত্তাকর্ষক জটিল অ্যাপ্লিকেশন সরবরাহ করা হয়েছে যা খুব ভালভাবে ভাড়া।

এবং আপনার আর্কিটেকচারের পছন্দটি সম্পূর্ণ আপনার লক্ষ্যগুলির উপর নির্ভর করে। আপনি যদি একাধিক ক্লায়েন্টকে সমর্থন করার দ্রুততম উপায় সন্ধান করছেন এবং ভাল ফ্রন্ট-এন্ড প্রতিভা অ্যাক্সেস পেয়ে থাকেন তবে স্ট্যান্ড্যালোন এপিআইতে বিনিয়োগ করা এক দুর্দান্ত উপায়।


1
একটি ছোট্ট বিন্দু যোগ করুন: যদিও আমি কেবল # 1 বিকল্পটি তৈরি করেছি, আমি একাধিক মোবাইল অ্যাপ বিকাশকারীকে জানি যারা # 2 এ দ্রুত পথ সক্ষম করার জন্য পার্স ডট কমকে তাদের ব্যাকএন্ড হিসাবে ব্যবহার করতে শুরু করেছে।
Rhb123

পার্সে এবং কিনেভের মতো বিষয়গুলি খুব আকর্ষণীয়, এটি বলতে পারি না যে আমি এখনও ডাব্লু / সেগুলি খেলার সুযোগ পেয়েছি। আপনার মানটি স্ট্যাকের সামনে বা পিছনে রয়েছে তা নির্ভর করে
অ্যারন

আমি সামনের অংশের জন্য স্পাইনজগুলির সাথে একই পন্থাটি ব্যবহার করি।
নিকোলাস গয়ে

আপনি দুটি পৃথক অ্যাপ্লিকেশন চলমান একটি একক ডোমেন কীভাবে পরিচালনা করবেন? যেমন। আমার কাছে www.mysite.com আছে এবং আমি একটি সর্বজনীন এপিআই প্রকাশ করতে এবং সেই URL এ একটি ফ্রন্ট-এন্ড পরিবেশন করতে চাই। REST নীতিগুলি থেকে সত্য, কোনও ওয়েব ব্রাউজার থেকে অ্যাক্সেস করা mysite.com / প্রোডাক্ট / 24 টি এইচটিটিপি গ্রহণ করুন শিরোনাম দেখে একটি HTML পৃষ্ঠা ফেরত দেওয়া উচিত, এবং mysite.com/product/24 এ স্বীকৃতি শিরোনামে JSON সহ একটি জিইটি JSON ফেরত আসবে ।
এরিক

কীভাবে অ্যাঙ্গুলারজেএস এই জন্য প্যান আউট করবে?
অঙ্কন-জেরোব

48

খুব ভাল জিজ্ঞাসা। +1 টি। অবশ্যই, এটি আমার জন্য ভবিষ্যতে দরকারী রেফারেন্স। এছাড়াও অ্যারোন এবং অন্যান্যরা আলোচনার মান যুক্ত করেছে। রুবির মতো, এই প্রশ্নটি অন্যান্য প্রোগ্রামিং পরিবেশের জন্যও সমানভাবে প্রযোজ্য।

আমি প্রথম দুটি বিকল্প ব্যবহার করেছি। অসংখ্য অ্যাপ্লিকেশনের জন্য প্রথমটি এবং দ্বিতীয়টি আমার ওপেন সোর্স প্রকল্প কাউউপের জন্য

বিকল্প 1

এটি কোনও সন্দেহ নেই যে সবচেয়ে জনপ্রিয়। তবে আমি দেখতে পেয়েছি বাস্তবায়নটি বেশিরভাগ http-ish। প্রতিটি এপিআই এর প্রাথমিক কোড অনুরোধ অবজেক্টের সাথে কাজ করে। তাই এপিআই কোড খাঁটি রুবি / পাইথন / অন্যান্য ভাষার কোডের চেয়ে বেশি।

বিকল্প 2

আমি সবসময় এই পছন্দ।

এই বিকল্পটি আরও বোঝায় যে সার্ভারে এইচটিএমএল রানটাইম উত্পন্ন হয় না। এইভাবে বিকল্প 2 বিকল্প 3 থেকে পৃথক But তবে বিল্ড স্ক্রিপ্টটি ব্যবহার করে স্থির এইচটিএমএল হিসাবে নির্মিত হয়। ক্লায়েন্ট পক্ষের উপর লোড করা হলে এই এইচটিএমএল জেএস এপিআই ক্লায়েন্ট হিসাবে এপিআই সার্ভার কল করবে।

  • উদ্বেগ পৃথকীকরণ দুর্দান্ত সুবিধা। এবং আপনার পছন্দ অনুসারে (এবং আমার) ব্যাকএন্ড বিশেষজ্ঞগণ ব্যাকএন্ড এপিআই প্রয়োগ করে, ফ্রেমওয়ার্ক / এইচটিপি রিকোয়েস্ট কোড সম্পর্কে চিন্তা না করে সাধারণ ভাষা কোডের মতো সহজেই তাদের পরীক্ষা করুন।

  • এটি সামনের দিকে যেমন শোনাচ্ছে ততটা কঠিন নয়। আপনার ক্লায়েন্টের সাইড টেম্পলেট বা এমভিসির জন্য এপিআই কল এবং ফলাফল ডেটা (বেশিরভাগ জসন) উপলব্ধ।

  • সার্ভারের সাইড প্রসেসিং কম। এর অর্থ আপনি পণ্য হার্ডওয়্যার / কম ব্যয়বহুল সার্ভারে যেতে পারেন।

  • স্বতন্ত্রভাবে স্তরগুলি পরীক্ষা করা সহজ, এপিআই ডক্স উত্পন্ন করা সহজ।

এটি কিছু ডাউনসাইডস আছে।

  • অনেক বিকাশকারী এটি ওভার ইঞ্জিনিয়ারড এবং বোঝা শক্ত বলে মনে করেন। সুতরাং সম্ভাবনা রয়েছে যে স্থাপত্য সমালোচনা পেতে পারে।

  • i18n / l10n শক্ত। যেহেতু এইচটিএমএলটি মূলত উত্পন্ন বিল্ড সময় স্থির হয় তাই সমর্থিত ভাষার জন্য একাধিক বিল্ড প্রয়োজন (যা অগত্যা কোনও খারাপ জিনিস নয়)। তবে এর সাথেও আপনার l10n / i18n এর চারপাশে কোণার কেস থাকতে পারে এবং সতর্ক হওয়া দরকার।

বিকল্প 3

এই ক্ষেত্রে ব্যাকএন্ড কোডিং অবশ্যই দ্বিতীয় বিকল্প হিসাবে একই হতে হবে। বিকল্প 2 এর জন্য বেশিরভাগ পয়েন্টগুলি এখানেও প্রযোজ্য।

ওয়েব পৃষ্ঠাগুলি সার্ভার সাইড টেম্পলেট ব্যবহার করে রানটাইম রেন্ডার করা হয়। এটি আরও প্রতিষ্ঠিত / গৃহীত কৌশলগুলির সাহায্যে i18n / l10nটিকে আরও সহজ করে তোলে। পৃষ্ঠার রেন্ডারিংয়ের জন্য ব্যবহারকারী, ভাষা, মুদ্রা ইত্যাদির জন্য প্রয়োজনীয় কিছু প্রাসঙ্গিক প্রয়োজনের জন্য একটি কম HTTP কল হতে পারে তাই সার্ভার সাইড প্রসেসিং রেন্ডারিংয়ের সাথে বাড়ানো হয় তবে সম্ভবত এপিআই সার্ভারে কম http কল দ্বারা ক্ষতিপূরণ পাওয়া যায়।

পৃষ্ঠাগুলি সার্ভারে সার্ভার রেন্ডার করা হয়েছে, ফ্রন্টএন্ড এখন প্রোগ্রামিং পরিবেশের সাথে আরও বেশি আবদ্ধ। এটি অনেক অ্যাপ্লিকেশন জন্য এমনকি বিবেচনা নাও হতে পারে।

টুইটার কেস

আমি যেমন বুঝতে পেরেছি, টুইটার তাদের প্রথম পৃষ্ঠায় সার্ভারে রেন্ডারিং করতে পারে তবে পৃষ্ঠা আপডেটের জন্য এটিতে এখনও কিছু এপিআই কল এবং ক্লোম সাইড টেমপ্লেট রয়েছে যা ডমকে সামাল দিতে পারে। সুতরাং এই জাতীয় ক্ষেত্রে আপনার ডাবল টেম্পলেটগুলি বজায় রাখতে হবে যা কিছু ওভারহেড এবং জটিলতা যুক্ত করে। টুইটারের বিপরীতে সবাই এই বিকল্পটি বহন করতে পারে না।

আমাদের প্রকল্পের স্ট্যাক

আমি পাইথন ব্যবহার করতে পারি। আমি রিস্টের পরিবর্তে জসনআরপিসি 2.0 ব্যবহার করি। আমি বিশ্রামের পরামর্শ দিই, যদিও বিভিন্ন কারণে আমি জসনআরপিসি সম্পর্কে ধারণা পছন্দ করি। আমি লাইব্রেরি নীচে ব্যবহার। বিকল্প 2/3 বিবেচনা করা কারও পক্ষে এটি দরকারী হতে পারে।

  • এপিআই সার্ভার: পাইথন একটি দ্রুত ওয়েব মাইক্রো ফ্রেমওয়ার্ক - ফ্লাস্ক
  • সম্মুখভাগের সার্ভার: এনগিনেক্স
  • ক্লায়েন্ট পাশের এমভিসি: নকআউট.জেএস
  • অন্যান্য সম্পর্কিত সরঞ্জাম / libs:

আমার উপসংহার এবং সুপারিশ

বিকল্প 3 !.

সমস্ত বলেছে, আমি বিকল্প 2 সফলভাবে ব্যবহার করেছি তবে এখন কিছু সরলতার জন্য 3 বিকল্পের দিকে ঝুঁকছি। বিল্ড স্ক্রিপ্ট সহ স্থির এইচটিএমএল পৃষ্ঠাগুলি তৈরি করা এবং স্ট্যাটিক পৃষ্ঠাগুলি পরিবেশন করতে বিশেষী এমন একটি অতি দ্রুত সার্ভারের সাথে তাদের পরিবেশন করা অত্যন্ত লোভনীয় (বিকল্প 2)।


আমি অপশন 2ও পছন্দ করি তবে বিকল্প 3 এর অনেক সুবিধা রয়েছে যা আমরা এড়াতে পারি না। আমি অপট 2 + অপ্ট 3 উভয়ের সংমিশ্রণে কিছু হাইড্রিড-সমাধান আবিষ্কার করার চেষ্টা করছি, তবে এটি টুইটারের মতো মাথা ব্যথার দিকে পরিচালিত করবে।
ব্লু স্মিথ

আমি বিকল্প 3 পছন্দ করি এবং বর্তমান প্রকল্পের জন্য ব্যবহার করার লক্ষ্য রেখেছি। কোন উদাহরণ বা গিট রেপো আপনি সাহায্যের জন্য নির্দেশ করতে পারেন?
AmaChefe

পছন্দ করুন বর্তমান প্রকল্পের জন্য যেখানে এসইও গুরুত্বপূর্ণ, আমরা বিকল্পটি ৩ ব্যবহার করি But তবে কোড ওপেন সোর্স নয়। আমরা ফ্লাস্ক + জিনজা 2 এবং নকআউট / রিএ্যাক্ট.জেএস ব্যবহার করি।
শেখর

28

গগ.ইস তৈরি করার সময় আমরা # 2 এর জন্য পছন্দ করেছি। আমি এপিআইতে (রুবি, সিনেট্রা ইত্যাদি) কাজ করেছি এবং আমার ব্যবসায়ের অংশীদার স্টিভ স্মিথ ফ্রন্ট-এন্ডে (জাভাস্ক্রিপ্ট ক্লায়েন্ট) কাজ করেছি।

পেশাদাররা:

  1. সমান্তরালে দ্রুত সরান। আমি যদি স্টিভের আগে কাজ করে থাকি তবে আমি নতুন বৈশিষ্ট্যগুলির জন্য এপিআই তৈরি করতে পারতাম। তিনি যদি আমার সামনে কাজ করেন তবে তিনি খুব সহজেই এপিআই জালিয়াতে এবং ইউআই তৈরি করতে পারেন।

  2. বিনামূল্যে এপিআই। আপনার অ্যাপ্লিকেশনটিতে ডেটাতে খোলা অ্যাক্সেস থাকা খুব দ্রুত একটি মান বৈশিষ্ট্য হয়ে উঠছে। আপনি যদি ভিত্তি থেকে কোনও এপিআই দিয়ে শুরু করেন তবে আপনি এটি নিখরচায় পাবেন।

  3. পরিষ্কার পৃথকীকরণ। আপনার অ্যাপ্লিকেশনটিকে ক্লায়েন্টদের সাথে একটি API হিসাবে ভাবা ভাল better অবশ্যই, প্রথম এবং সর্বাধিক গুরুত্বপূর্ণ ক্লায়েন্টটি ওয়েব হতে পারে তবে সহজেই অন্যান্য ক্লায়েন্ট (আইফোন, অ্যান্ড্রয়েড) তৈরি করার জন্য এটি আপনাকে সেট আপ করে।

কনস:

  1. পূর্ববর্তী সংস্করণের সাথে সামঞ্জস্যপূর্ণ. এটি আপনার সরাসরি প্রশ্নের চেয়ে কোনও এপিআইয়ের সাথে সম্পর্কিত, তবে একবার আপনার এপিআই বের হয়ে গেলে আপনি কেবল এটি ভাঙ্গতে পারবেন না বা আপনার সমস্ত ক্লায়েন্টকে দু'টি ভেঙে ফেলতে পারবেন। এর অর্থ এই নয় যে আপনাকে ধীর গতিতে চলতে হবে, তবে এর অর্থ এই নয় যে আপনাকে প্রায়শই দুটি জিনিস একবারে কাজ করতে হয়। এপিআই বা নতুন ক্ষেত্রগুলিতে যুক্ত করা ভাল, তবে পরিবর্তন / অপসারণ সংস্করণ ছাড়াই করা উচিত নয়।

আমি এখনই আর কনস সম্পর্কে ভাবতে পারি না।

উপসংহার: আপনি যদি কোনও API ছাড়ার পরিকল্পনা করেন তবে API + JS ক্লায়েন্ট হ'ল উপায়।

পিএস আমি আপনার এপিআই প্রকাশ করার আগে এটি সম্পূর্ণরূপে ডকুমেন্ট করার পরামর্শ দিচ্ছি। গগস.আইপিআই ডকুমেন্টিংয়ের প্রক্রিয়াটি সত্যই আমাদের প্রভাবিত করতে সহায়তা করেছিল

http://get.gaug.es/documentation/api/


13
আমি কী জিজ্ঞাসা করতে পারি যে আপনি কীভাবে আরআরটি এপিআই দিয়ে ওয়েব ফ্রন্টএন্ডটি প্রমাণীকরণ করবেন? আমি দেখেছি আপনার সাথে যোগাযোগ করার জন্য আপনার একটি API কী প্রয়োজন যা আপনার ব্যবহারকারী প্রোফাইলে লগ ইন করে প্রাপ্ত। তবে কীভাবে ওয়েব ক্লায়েন্ট তার এপিআই কী পাবেন, যদি আপনি জানেন তবে আমার অর্থ কী?
সেবাস্তিয়ান রাম্বা

@ সেবাস্তিয়ান ওয়ারাম্বা এটি দেরী হয়ে গেছে, তবে যেহেতু আপনার মন্তব্যটি 12 টি উপস্থাপনা পেয়েছে ... আমি OAuth2 এর পাসওয়ার্ড অনুমোদনের মতো কিছু দেখতে চাই । আপনি যদি অ্যাপ্লিকেশনকে কল করে অ্যাপের স্রষ্টা হন তবে এটি সম্ভবত আপনি চান এমন পদ্ধতির কারণ এটি সরাসরি API কী ব্যবহার করে না। যদি এটি একটি তৃতীয় পক্ষের অ্যাপ্লিকেশন হয় তবে তাদের এপিআই কী পেতে আপনার ওয়েবসাইটটিতে ব্যবহারকারী লগইন করেছেন এবং তারপরে ব্যবহারকারী তাদের অ্যাপ, ওয়েবসাইট ইত্যাদির মাধ্যমে এপিআই অ্যাক্সেস করতে সেই কীটি (এবং অন্য কোনও প্রয়োজনীয় শংসাপত্রগুলি) ব্যবহার করে
গ্রীক্যাট্রিনা

10

আমি # 2 এবং # 3 এর পথে যেতে পছন্দ করি। মূলত কারণ # 1 উদ্বেগের বিচ্ছেদ লঙ্ঘন করে এবং সমস্ত ধরণের উপাদানগুলিকে মিলিত করে। অবশেষে আপনার কাছে এমন একটি এপিআই শেষ পয়েন্ট থাকা দরকার যা মিলবে এইচটিএমএল পৃষ্ঠা / ইত্যাদি নেই এবং আপনি একই কোড বেসে অন্তর্নির্মিত এইচটিএমএল এবং জেএসএন শেষ পয়েন্ট সহ একটি ক্রিক হয়ে যাবেন। এটি একটি উদ্ভট জগাখিচায় পরিণত হয়, এমনকি যদি তার এমভিপি হয় তবে আপনাকে অবশেষে এটি আবার লিখতে হবে কারণ এর খুব অগোছালো যে এটি উদ্ধারযোগ্যও নয়।

# 2 বা # 3 দিয়ে যাওয়ার সাথে সাথে আপনি এমন একটি এপিআই সম্পূর্ণরূপে অনুমতি পেতে পারেন যা নির্বিশেষে একই (বেশিরভাগ অংশের জন্য) কাজ করে। এটি দুর্দান্ত নমনীয়তা সরবরাহ করে। আমি এখনও 100% ব্যাকবোন / এমবার / যাই হোক না কেন / ইত্যাদিতে বিক্রি করি না। আমি এটি দুর্দান্ত মনে করি, তবে আমরা টুইটারের সাথে দেখছি এটি সর্বোত্তম নয়। কিন্তু ... টুইটারটিও একটি সংস্থার বিশাল প্রাণী এবং এতে কয়েক মিলিয়ন ব্যবহারকারী রয়েছে users সুতরাং যে কোনও উন্নতি বিভিন্ন বিজনেস ইউনিটের বিভিন্ন ক্ষেত্রে নীচের অংশে বিশাল প্রভাব ফেলতে পারে। আমি মনে করি একা গতির চেয়ে সিদ্ধান্তের আরও অনেক কিছুই আছে এবং তারা আমাদের তাতে প্রবেশ করতে দিচ্ছে না। তবে ঠিক আমার মতামত। তবে আমি ব্যাকবোন এবং এর প্রতিযোগীদের ছাড় দিই না। এই অ্যাপ্লিকেশনগুলি ব্যবহারের জন্য দুর্দান্ত এবং খুব পরিষ্কার এবং খুব প্রতিক্রিয়াশীল (বেশিরভাগ অংশে)।

তৃতীয় বিকল্পের কিছু বৈধ মোহন রয়েছে। এখানেই আমি পেরেটো নীতি অনুসরণ করেছি (৮০/২০ বিধি) এবং সার্ভারে আপনার মূল মার্কআপের (বা বিপরীতে) রেন্ডার করেছি এবং তারপরে একটি সুন্দর জেএস ক্লায়েন্ট (ব্যাকবোন / ইত্যাদি) বাকী অংশটি চালিয়ে যাব । আপনি জেএস ক্লায়েন্টের মাধ্যমে আরইএসটি এপিআইয়ের সাথে 100% যোগাযোগ করছেন না, তবে মামলাটির অভিজ্ঞতা আরও ভাল করার জন্য আপনি প্রয়োজনে কিছু কাজ করবেন।

আমি মনে করি এটি সেই "ধরণের নির্ভর করে" ধরণের সমস্যাগুলির মধ্যে একটি এবং আপনি যা করছেন তার উপর নির্ভর করে "এটি নির্ভর করে", আপনি কাকে সেবা দিচ্ছেন এবং কী ধরণের অভিজ্ঞতা পেতে চান সে সম্পর্কে। প্রদত্ত যে আমি মনে করি আপনি 2 বা 3 বা এর মধ্যে একটি হাইব্রিডের মধ্যে সিদ্ধান্ত নিতে পারেন।


2 এবং 3 এর হাইব্রিড +1
উজ্জ্বল ওঝা

7

আমি বর্তমানে একটি বিশাল সিএমএসকে বিকল্প 1 থেকে বিকল্প 3 তে রূপান্তর করতে কাজ করছি এবং এটি ভাল চলছে। আমরা মার্কআপ সার্ভার-সাইড রেন্ডার করতে বেছে নিয়েছি কারণ এসইও আমাদের কাছে একটি বড় বিষয়, এবং আমরা সাইটগুলি মোবাইল ফোনে ভাল সম্পাদন করতে চাই।

আমি ক্লায়েন্টের ব্যাক-এন্ড এবং আমাকে সাহায্য করার জন্য কয়েকটি মুডিউল জন্য নোড.জেএস ব্যবহার করছি। আমি প্রক্রিয়াটির কিছুটা প্রথম দিকে আছি তবে ফাউন্ডেশনটি সেট করা আছে এবং এটি সমস্ত সঠিকভাবে রেন্ডার করে তা নিশ্চিত করে ডেটা অতিক্রম করার বিষয়। আমি যা ব্যবহার করছি তা এখানে:

  • অ্যাপ্লিকেশন এর ভিত্তি জন্য এক্সপ্রেস।
    (https://github.com/visionmedia/express)
  • ডেটা আনার অনুরোধ।
    (https://github.com/mikeal/request)
  • টেমপ্লেটগুলি অ্যান্ডকোর করুন যা সার্ভারের পাশে রেন্ডার হয়। আমি ক্লায়েন্ট উপর এই পুনরায় ব্যবহার।
    (https://github.com/documentcloud/underscore)
  • ইউটিএমএল এক্সপ্রেসের সাথে কাজ করার জন্য আন্ডারস্কোরের টেম্পলেটগুলিকে মোড়ানো।
    (https://github.com/mikefrey/utml)
  • সম্মুখভাগ টেমপ্লেট সংগ্রহ করে এবং আসুন আপনি চয়ন করুন যা ক্লায়েন্টকে প্রেরণ করা হয়।
    (https://github.com/mrDarcyMurphy/upfront)
  • এক্সপ্রেস এক্সপোজ আনীত ডেটা, কিছু মডিউল এবং টেম্পলেটগুলি সামনের প্রান্তে পাস করে।
    (https://github.com/visionmedia/express-expose)
  • ব্যাকবোনটি প্রেরণ করা ডেটা গিলে ফেলার পরে সামনের প্রান্তে মডেল এবং ভিউ তৈরি করে।
    (https://github.com/documentcloud/backbone)

এটি স্ট্যাকের মূল। আমি সহায়ক বলে মনে করেছি কিছু অন্যান্য মডিউল:

  • ফলক (https // github.com / ট্রেক / ফলক)
  • মুহূর্ত (https // github.com / টাইমারউড / মুহূর্ত)
  • স্টাইলাস (https // github.com / শিখান বুস্ট / স্টাইলাস)
  • স্মুশ (https // github.com / ফ্যাট / স্মুশ)
    … যদিও আমি গ্রান্টের দিকে নজর দিচ্ছি (https // github.com / কাউবয় / গ্রুর্ট)
  • কনসোল ট্রেস (//github.com/LearnBoost/console-trace)।

না, আমি কফিস্ক্রিপ্ট ব্যবহার করছি না।

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

(অদ্ভুত লিঙ্কগুলির জন্য দুঃখিত, স্ট্যাক ওভারফ্লো আমাকে অনেক পোস্ট করতে দেয়ার জন্য আমি অনেক বেশি n00b


1
সুতরাং আপনি মার্কআপ সার্ভার-সাইড রেন্ডার করছেন কিন্তু আপনি এখনও ক্লায়েন্টকে টেমপ্লেট দিচ্ছেন এবং ব্যাকবোন ব্যবহার করছেন?
শ্যানন

7

আমরা # 3 এর নিম্নলিখিত রূপটি ব্যবহার করি: একটি JSON- কেবলমাত্র REST এপিআই সার্ভার তৈরি করুন। একটি HTML ওয়েবসাইট সার্ভার তৈরি করুন server এইচটিএমএল ওয়েব সার্ভারটি আপনার বৈকল্পিকের মতো নয়, আরএসটি এপিআই সার্ভারের ক্লায়েন্ট। পরিবর্তে, দুটি সমবয়সী হয়। পৃষ্ঠের খুব কম নীচে, একটি অভ্যন্তরীণ এপিআই রয়েছে যা দুটি সার্ভারের প্রয়োজনীয় কার্যকারিতা সরবরাহ করে।

আমরা কোনও নজির সম্পর্কে অবগত নই, সুতরাং এটি একরকম পরীক্ষামূলক। এখনও অবধি (বিটাতে প্রবেশ করতে চলেছে), এটি বেশ সুন্দরভাবে কাজ করেছে।


যথাযথ API ক্লায়েন্ট, যেমন প্রমাণীকরণ সম্পর্কিত কিছু সমস্যা এড়াতে আমি এই বিকল্পটি নিয়ে ভাবছি। আপনি কীভাবে পুরো বিষয়টি কাঠামোগত করেছিলেন এবং কীভাবে আপনি তিনটি পৃথক অংশের মধ্যে বিচ্ছেদ এবং যোগাযোগ পরিচালনা করেন সে সম্পর্কে আমি আরও জানতে চাই। আমি কি কিছু পড়তে পারি? ধন্যবাদ!
মার্টিনোডএফ

2
@ মার্টিনোডএফ আমরা গুগল অ্যাপ ইঞ্জিনে হোস্ট করি যা জাভা বা পাইথনের সীমাবদ্ধ। পাইথন ব্যবহার করতে চেয়েছিল, তবে জাভাতে বাধ্য হয়েছিল কারণ আমরা সংখ্যার ক্রাচ করি (জিএইতে সি / সি ++ দিয়ে পাই বাড়িয়ে দিতে পারি না)। আমরা স্ট্রিপস (স্ট্রিপস, বেছে নেওয়া হয়েছে না ভাররক্ষা, না উপস্থাপনা কাঠামোর জন্য স্প্রিং)। এতে খুব খুশি। পুরো জিনিসটি জিএইতে একটি জাভা অ্যাপ্লিকেশন। মূল কার্যকারিতা জাভা প্যাকেজগুলির একটি গোছায় প্রয়োগ করা হয় এবং অভ্যন্তরীণ এপিআইতে প্রকাশিত হয়। এখানে একটি সার্লেট রয়েছে যা জেএসওএন আরএসটি পরিষেবা সরবরাহ করে এবং অন্য একটি স্ট্রিপস ওয়েব অ্যাপ্লিকেশন হিসাবে কনফিগার করা আছে। যেহেতু এটি সমস্ত এক জিএই জাভা অ্যাপ্লিকেশন, তাই যোগাযোগ তুচ্ছ।
টমাস বেকার

অন্তর্দৃষ্টি জন্য ধন্যবাদ, এটি খুব দরকারী!
মার্টিনোডএফ

7

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

আমি সর্বশেষ রুবিডে.ইটিতে এই পদ্ধতির উপর একটি উপস্থাপনা করেছি : http://www.slideshare.net/matteocollina/enter-the-app-era-with-ruby-on-rails-rubyday এ

তৃতীয় বিকল্পের জন্য, ২ য়টির প্রতিক্রিয়া জানার জন্য, আপনি গিথুবের মতো পাজাক্স চেষ্টা করতে চাইতে পারেন ।


6

আমি প্রায় 3 মাস 3 মাসের প্রকল্পে যা আপনি এখানে বর্ণিত দ্বিতীয় পদ্ধতির গ্রহণ করে। আমরা সামনের দিকে backbone.js সহ একটি RESTful API সার্ভার ব্যবহার করি। Handlebars.js টেমপ্লেট পরিচালনা করে এবং jQuery AJAX এবং DOM ম্যানিপুলেশন পরিচালনা করে। পুরানো ব্রাউজার এবং অনুসন্ধান মাকড়সার জন্য আমরা সার্ভার সাইড রেন্ডারিংয়ে ফিরে এসেছি, তবে আমরা হ্যান্ডলবার্স ফ্রন্ট্যান্ডের মতো একই এইচটিএমএল টেমপ্লেটগুলি মজিলা রাইনো ব্যবহার করে ব্যবহার করছি।

আমরা এই পদ্ধতির অনেকগুলি বিভিন্ন কারণে বেছে নিয়েছি তবে এটি খুব সামান্যই সচেতন যে এটি এখনও কোনও বিস্তৃত আকারে প্রমাণিত হয়নি বলে কিছুটা ঝুঁকিপূর্ণ। সব একই, সবকিছু এখনও পর্যন্ত খুব সহজেই চলছে।

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

প্রকল্পের এই দুটি টুকরো একে অপরের থেকে সম্পূর্ণ স্বতন্ত্র হওয়া এই অবকাঠামোটি নির্বাচনের ক্ষেত্রে মূল বিবেচনা ছিল। আপনি যদি কোনও নির্ভরতা ছাড়াই বিভিন্ন স্বতন্ত্র সংস্থানগুলি ম্যাসআপ করার জন্য কোনও আর্কিটেকচারের সন্ধান করছেন তবে এই পদ্ধতির দিকে নজর দেওয়া উচিত।

আমি আশঙ্কা করছি যে আমি কোনও রুবি লোক না তাই অন্যান্য পদ্ধতির বিষয়ে আমি মন্তব্য করতে পারি না। কখনও কখনও এটি ঝুঁকি নেওয়া ঠিক আছে। অন্য সময় এটি নিরাপদ খেলাই ভাল। প্রকল্পের ধরণের উপর নির্ভর করে আপনি নিজেকে owণী করে তুলবেন।

এখানে আপনার পছন্দের সাথে শুভকামনা। অন্যরা কী ভাগ করে নেয় তা দেখতে আগ্রহী।


1
সুতরাং আপনি শনাক্ত করে যে অনুরোধটি কোনও অনুসন্ধান বট থেকে আসছে কিনা, এবং এটি যদি প্রি-রেন্ডার করা এইচটিএমএল এবং জেএস + টেম্পলেটগুলি না হয় তবে তা পরিবেশন করবেন?
শ্যানন

4

আমি # 3 পছন্দ করি যখন আমার ওয়েবসাইটটি আমার ডেটা 100% সিআরইউডি বাস্তবায়ন করে না। যা এখনও ঘটেনি।

আমি সিনট্রা পছন্দ করি এবং অ্যাপটিকে বিভিন্ন উদ্দেশ্যে কয়েকটি ভিন্ন র‌্যাক অ্যাপ্লিকেশনগুলিতে ভাগ করব। আমি একটি API নির্দিষ্ট র্যাক অ্যাপ্লিকেশন করব যা এপিআইয়ের জন্য আমার যা প্রয়োজন তা কভার করবে। তারপরে সম্ভবত কোনও ব্যবহারকারী র্যাক অ্যাপ্লিকেশন যা আমার ওয়েবপৃষ্ঠা উপস্থাপন করবে। কখনও কখনও সেই সংস্করণটি যদি প্রয়োজন হয় তবে API কে জিজ্ঞাসা করবে, তবে সাধারণত এটি HTML সাইটের সাথে নিজেকে উদ্বেগ দেয়।

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

একাধিক র্যাক অ্যাপ্লিকেশন ব্যবহারের খুব সাধারণ উদাহরণ এখানে । এটিআইপি অ্যাপ্লিকেশনটিকে আঘাত করছে তা দেখার জন্য আমি সেখানে একটি দ্রুত jquery উদাহরণ যুক্ত করেছি। আপনি দেখতে পাচ্ছেন যে সায়াত্রা এবং বিভিন্ন উদ্দেশ্যে একাধিক র্যাক অ্যাপ্লিকেশনগুলি মাউন্ট করার মাধ্যমে এটি কতটা সহজ।

https://github.com/dusty/multi-rack-app-app


1

এখানে ইতিমধ্যে কয়েকটি দুর্দান্ত উত্তর - আমি অবশ্যই # 2 বা # 3 এর সুপারিশ করব - ধারণাটিগতভাবেই কিন্তু বাস্তবেও বিচ্ছেদটি ভাল।

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

# 2 # 3 এর মধ্যে এটি সত্যিই আপনার লক্ষ্যগুলির উপর নির্ভর করে - আমি সম্মত হই যে # 2 সম্ভবত ওয়েব অ্যাপসের ভবিষ্যত - তবে যদি আপনি চ্যানেলটি কেবল একটির মধ্যে এক হতে চলেছে তবে আপনি আরও সোজা কিছু চান!


1

Atyourservice.com.cy এর জন্য আমরা পৃষ্ঠাগুলির জন্য বিশেষত সে অংশটি কভার করার জন্য সার্ভার সাইড রেন্ডারড টেম্পলেটগুলি ব্যবহার করছি। এবং পৃষ্ঠা লোডের পরে ইন্টারঅ্যাকশনের জন্য এপিআই ব্যবহার করে। যেহেতু আমাদের কাঠামো এমভিসি, সমস্ত নিয়ামক ফাংশনগুলি জসন আউটপুট এবং এইচটিএমএল আউটপুটে সদৃশ। টেমপ্লেটগুলি পরিষ্কার এবং কেবল একটি অবজেক্ট গ্রহণ করে। এটি সেকেন্ডে জেএস টেম্পলেটগুলিতে রূপান্তরিত হতে পারে। আমরা সর্বদা সার্ভারসাইড টেম্পলেটগুলি বজায় রাখি এবং অনুরোধে কেবল জেএসে ফিরে আসি।


1

আইসমোর্ফিক রেন্ডারিং এবং প্রগতিশীল বর্ধন। আমি মনে করি যা আপনি বিকল্প তিনটি জন্য নেতৃত্বে ছিল?

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

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

হ্যাঁ, অবশ্যই এই অ্যাপ্লিকেশনটির কার্যকারিতার জন্য একটি স্বতন্ত্র জাসন এপিআই লিখুন। তবে এতদূর যাবেন না যে আপনি স্ট্যাটিক এইচটিএমএল ডকুমেন্ট হিসাবে সূক্ষ্মভাবে কাজ করে এমন জিনিসের জন্য একটি জসন এপিআই লিখেছেন।


1

REST সার্ভার + জাভাস্ক্রিপ্ট-ভারী ক্লায়েন্ট হ'ল নীতিটি আমি আমার সাম্প্রতিক কাজে অনুসরণ করেছি।

REST সার্ভারটি নোড.জেএস + এক্সপ্রেস + মঙ্গোডিবিতে প্রয়োগ করা হয়েছিল (খুব ভাল লেখার পারফরম্যান্স) + মঙ্গুজ ওডিএম (তথ্য মডেলিংয়ের জন্য দুর্দান্ত, বৈধতা অন্তর্ভুক্ত) + কফিস্ক্রিপ্ট (আমি এখন এর পরিবর্তে ES2015 যেতে চাই) যা আমার পক্ষে ভাল কাজ করেছে worked অন্যান্য সম্ভাব্য সার্ভার-সাইড প্রযুক্তির তুলনায় নোড.জেএস তুলনামূলকভাবে অল্প বয়স্ক হতে পারে তবে পেমেন্ট ইন্টিগ্রেটেডের সাথে আমার পক্ষে কঠিন এপিআই লেখার পক্ষে এটি সম্ভব হয়েছে।

আমি জাভাস্ক্রিপ্ট ফ্রেমওয়ার্ক হিসাবে এমবার.জে ব্যবহার করেছি এবং বেশিরভাগ অ্যাপ্লিকেশন যুক্তি ব্রাউজারে কার্যকর করা হয়েছিল। আমি SASS ব্যবহার করেছি সিএসএস প্রাক প্রসেসিংয়ের জন্য (বিশেষত এসসিএসএস) ।

অ্যাম্বার দৃ mature় সম্প্রদায়ের সমর্থিত পরিপক্ক কাঠামো। এটি ব্র্যান্ড নিউ গ্লিমার রেন্ডারিং ইঞ্জিনের মতো (প্রতিক্রিয়া দ্বারা অনুপ্রাণিত) মতো পারফরম্যান্সের উপর ফোকাস করে প্রচুর কাজ করা খুব শক্তিশালী কাঠামো ।

এম্বার কোর টিম ফাস্টবুটটি বিকাশের প্রক্রিয়াধীন রয়েছে , যা আপনাকে জাভাস্ক্রিপ্ট অ্যাম্বার যুক্তিকে সার্ভার-সাইডে (বিশেষত নোড.জেএস) চালিত করতে এবং আপনার অ্যাপ্লিকেশনটির প্রাক-রেন্ডার এইচটিএমএল (যা সাধারণত ব্রাউজারে চালিত হবে) ব্যবহারকারীর কাছে প্রেরণ করতে দেয়। এটি এসইও এবং ব্যবহারকারীর অভিজ্ঞতার জন্য দুর্দান্ত কারণ তিনি পৃষ্ঠাটি প্রদর্শিত হওয়ার জন্য এত দিন অপেক্ষা করেন না।

অ্যাম্বার সিএলআই হ'ল দুর্দান্ত সরঞ্জাম যা আপনাকে আপনার কোডটি সংগঠিত করতে সহায়তা করে এবং ক্রমবর্ধমান কোডবেস দিয়ে স্কেল করা ভাল well অ্যাম্বারের নিজস্ব অ্যাডন ইকোসিস্টেম রয়েছে এবং আপনি বিভিন্ন সংখ্যক এমবার অ্যাডনস থেকে চয়ন করতে পারেন । আপনি সহজেই বুটস্ট্র্যাপ (আমার ক্ষেত্রে) বা ফাউন্ডেশন দখল করতে পারেন এবং এটি আপনার অ্যাপে যুক্ত করতে পারেন।

এক্সপ্রেসের মাধ্যমে সমস্ত কিছু পরিবেশন করার জন্য নয়, আমি চিত্র এবং জাভাস্ক্রিপ্ট-ভারী ক্লায়েন্ট পরিবেশনার জন্য এনগিনেক্স ব্যবহার করতে বেছে নিয়েছি। এনগিনেক্স প্রক্সি ব্যবহার করা আমার ক্ষেত্রে সহায়ক ছিল:

upstream app_appName.com {
  # replace 0.0.0.0 with your IP address and 1000 with your port of node HTTP server
  server 0.0.0.0:1000;
  keepalive 8;
}

server {
  listen 80 default_server;
  listen [::]:80 default_server ipv6only=on;

  client_max_body_size 32M;

  access_log  /var/log/nginx/appName.access.log;
  error_log  /var/log/nginx/appName.error.log;

  server_name appName.com appName;

  location / {
     # frontend assets path
     root /var/www/html;
     index index.html;

     # to handle Ember routing
     try_files $uri $uri/ /index.html?/$request_uri;
  }

  location /i/ {
    alias /var/i/img/;
  }

  location /api/v1/ {
    proxy_pass  http://app_appName.com;

    proxy_next_upstream error timeout invalid_header http_500 http_502
http_503 http_504;
    proxy_redirect off;
    proxy_buffering off;
    proxy_set_header        Host            $host;
    proxy_set_header        X-Real-IP       $remote_addr;
    proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
  }
}

প্রো: আমি এপিআই এবং ক্লায়েন্টের বিচ্ছেদ পছন্দ করি। স্মার্ট লোকেরা বলে যে এটিই যেতে হবে। তাত্ত্বিকভাবে দুর্দান্ত। উত্তেজনাপূর্ণ এবং উত্তেজনাপূর্ণ বলে মনে হচ্ছে।

আমি বলতে পারি এটি বাস্তবেও দুর্দান্ত। আরএসটি এপিআই পৃথক করার আরেকটি সুবিধা হ'ল আপনি অন্য অ্যাপ্লিকেশনগুলির জন্য পরে এটি পুনরায় ব্যবহার করতে পারেন। নিখুঁত বিশ্বে আপনি কেবলমাত্র ওয়েবপৃষ্ঠার জন্যই নয়, মোবাইল অ্যাপ্লিকেশনগুলির জন্যও একই REST এপিআই ব্যবহার করতে সক্ষম হবেন যদি আপনি কোনও এটির লেখার সিদ্ধান্ত নেন।

কন: বেশি নজির নেই। এর বেশিরভাগ উদাহরণ ভালভাবে করা হয়নি। সর্বজনীন উদাহরণ (টুইটার.কম) স্বাচ্ছন্দ্য বোধ করে এবং এমনকি এই পদ্ধতির থেকে সরে চলেছে।

বিষয়গুলি এখন অন্যরকম দেখাচ্ছে। REST এপিআই + করার অনেকগুলি ক্লায়েন্ট এটি গ্রহণ করেছে examples


1

আমি সিদ্ধান্ত নিয়েছি ইনফিনিফর্মগুলির জন্য বিকল্প # 2 এর আর্কিটেকচারে যাব , কারণ এটি ব্যবসার যুক্তি থেকে আলাদা করার একটি দুর্দান্ত উপায় সরবরাহ করেছে।

এর একটি সুবিধা হ'ল এপিআই সার্ভারগুলি ওয়েব সার্ভারগুলির থেকে স্বাধীনভাবে স্কেল করতে পারে। আপনার যদি একাধিক ক্লায়েন্ট থাকে তবে ওয়েব সার্ভারগুলির মতো ওয়েবসাইটগুলির একই পরিমাণে স্কেল করার প্রয়োজন হবে না, কারণ কিছু ক্লায়েন্ট ফোন / ট্যাবলেট বা ডেস্কটপ ভিত্তিক হতে পারে।

এই পদ্ধতিটি আপনাকে আপনার ব্যবহারকারীদের কাছে আপনার এপিআই খোলার জন্য একটি ভাল বেস দেয়, বিশেষত যদি আপনি নিজের ওয়েবসাইটের সমস্ত কার্যকারিতা সরবরাহ করার জন্য নিজের নিজস্ব এপিআই ব্যবহার করেন।


1

একটি খুব সুন্দর প্রশ্ন এবং আমি অবাক হয়েছি কারণ আমি ভেবেছিলাম আজকাল এটি একটি খুব সাধারণ কাজ যা এই সমস্যাটির জন্য আমার প্রচুর সংস্থান থাকবে, তবে সত্য বলে প্রমাণিত হয়নি।

আমার চিন্তা নিম্নরূপ হয়: - কিছু মডিউল এপিআই কন্ট্রোলার এবং HTML কন্ট্রোলার মধ্যে সাধারণ যুক্তিবিজ্ঞান আছে তৈরি করুন ছাড়া উদাহরণস্বরূপ JSON ফিরে যাই হোক না কেন চাও তারপর বা রেন্ডারিং HTML, এবং উভয় এইচটিএমএল নিয়ামক এবং API নিয়ামক মধ্যে এই মডিউল অন্তর্ভুক্ত, তাই :

module WebAndAPICommon
    module Products

        def index
            @products = # do some logic here that will set @products variable
        end

    end
end


class ProductsController < ApplicationController
    # default products controlelr, for rendering HMTL pages 
    include WebAndAPICommon

    def index
        super
    end

end



module API
    class ProductsController
        include WebAndAPICommon

        def index
            super
            render json: @products
        end

    end
end

0

আমি একটি হাইব্রিড পদ্ধতির জন্য গিয়েছিলাম যেখানে আমরা সিনাট্রাটিকে বেস, অ্যাক্টিভেকর্ড / পোস্টগ্রাইস ইত্যাদির মতো পৃষ্ঠা রুটগুলি সরবরাহ করার জন্য (স্লিম টেম্পলেট) ওয়েব-অ্যাপ ব্যবহার করতে পারেন এমন একটি REST API উন্মুক্ত করে। প্রারম্ভিক বিকাশের স্টাফগুলিতে পপুলিংয়ের মতো বিকল্প বিকল্পগুলি পাতলা টেম্পলেটে রেকর্ডিং সহায়কদের মাধ্যমে সম্পন্ন হয়, তবে আমরা উত্পাদনের কাছে যাওয়ার সাথে সাথে এটি একটি আরএএসএপিএল-এ আএএএক্সএক্স কলের জন্য সরে যায় কারণ আমরা পৃষ্ঠা-লোড গতির বিষয়ে আরও যত্ন নেওয়া শুরু করি।

যে স্টাফ স্লিমে রেন্ডার করা সহজ সেই পদ্ধতিতে হ্যান্ডেল হয়ে যায় এবং স্টাফগুলি (জনবহুল ফর্মগুলি, জিকুয়েরি.ভ্যালিডেশন submitHandlerইত্যাদির ফর্মের পোষ্ট ডেটা গ্রহণ করা , সমস্ত স্পষ্টতই এজেএক্স)

পরীক্ষা করা একটি বিষয়। এখনই আমি জ্যাকসোন ডেটা একটি র্যাক :: টেস্ট পোস্টের পরীক্ষায় পাস করার চেষ্টা করে স্ট্যাম্পড আছি ।


0

সমাধান হিসাবে আমি ব্যক্তিগতভাবে বিকল্প (3) পছন্দ করি। এটি আমার পূর্ববর্তী (পরিবারের নাম) মালিকের যে সমস্ত সাইট রয়েছে তার প্রায় সমস্ত সাইটে ব্যবহৃত হয়। এর অর্থ হ'ল আপনি এমন কিছু ফ্রন্ট-এন্ড ডেভস পেতে পারেন যারা জাভাস্ক্রিপ্ট, ব্রাউজারের quirks এবং আপনার সামনের প্রান্তটি কী কোড করতে হবে না তা সম্পর্কে সমস্ত জানেন। তাদের কেবল "curl xyz জানতে হবে এবং আপনি কিছু জেসন পাবেন" এবং তারা চলে যায়।

এদিকে, আপনার ভারী ওজনের ব্যাক-এন্ড ছেলেরা জসন সরবরাহকারীদের কোড আপ করতে পারে। এই ছেলেরা উপস্থাপনা সম্পর্কে মোটেও ভাবার দরকার নেই, এবং এর পরিবর্তে ফ্লেকি ব্যাকেন্ডস, সময়সীমা, কৌতূহলযুক্ত ত্রুটি পরিচালনা, ডাটাবেস সংযোগ পুল, থ্রেডিং এবং স্কেলিং ইত্যাদির বিষয়ে চিন্তা করুন don't

বিকল্প 3 আপনাকে একটি ভাল, কঠিন তিন স্তরের আর্কিটেকচার দেয়। এর অর্থ আপনি যে প্রান্তটি সামনের প্রান্তে ছিটিয়ে রেখেছেন তা SEO মৈত্রী, পুরানো বা নতুন ব্রাউজারগুলির সাথে কাজ করা যায় (এবং জেএস বন্ধ রয়েছে), এবং আপনি চাইলে এখনও জাভাস্ক্রিপ্ট ক্লায়েন্ট-সাইড টেম্প্লেটিং হতে পারে (যাতে আপনি পারতেন পুরানো ব্রাউজারগুলি / স্ট্যাটিক এইচটিএমএল সহ গুগলবোট হ্যান্ডেল করার মতো জিনিসগুলি করুন তবে সর্বশেষতম ক্রোম ব্রাউজার ব্যবহার করে বা যাই হোক না কেন জেএস নির্মিত গতিশীল অভিজ্ঞতা প্রেরণ করুন)।

সমস্ত ক্ষেত্রে আমি অপশন 3 দেখেছি, এটি এমন কিছু পিএইচপি-র একটি কাস্টম বাস্তবায়ন যা প্রকল্পগুলির মধ্যে বিশেষত স্থানান্তরযোগ্য নয়, ওপেন সোর্স ল্যান্ডে ছেড়ে দেওয়া হোক। আমি অনুমান করি যে সাম্প্রতিক পিএইচপি সম্ভবত রুবি / রেলগুলির সাথে প্রতিস্থাপিত হয়েছে, তবে একই ধরণের জিনিসটি এখনও সত্য।

এফডব্লিউআইডাব্লু, $ বর্তমান_প্রেমী অপশন 3 এর সাথে কয়েকটি গুরুত্বপূর্ণ জায়গায় করতে পারে। আমি একটি ভাল রুবি ফ্রেমওয়ার্ক খুঁজছি যাতে কিছু তৈরি করা যায়। আমি নিশ্চিত যে আমি প্রচুর রত্নকে একসাথে আঠালো করতে পারি, তবে আমি এমন একটি পণ্য পছন্দ করবো যা বিস্তৃতভাবে একটি টেম্প্লেটিং, 'কার্লিং', alচ্ছিক-প্রমাণীকরণ, alচ্ছিক স্মৃতিচিহ্ন / নোএসকিএল সংযুক্ত ক্যাশে সমাধান সরবরাহ করে। আমি এখানে সুসংগত কিছু খুঁজে পেতে ব্যর্থ :-(


0

কারাগারে জেএসএন এপিআই তৈরি করা প্রথম শ্রেণি, জেএসোনাপি :: রিসোর্স রত্নটি একটি http://jsonapi.org স্পেস'ড এপিআইয়ের জন্য ভারী উত্তোলন করে ।

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