অভ্যন্তরীণ এবং বাহ্যিক API আর্কিটেকচার


19

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

  • ওয়েব অ্যাপ্লিকেশন
  • ডেটা আমদানি করার একটি সরঞ্জাম
  • অন্যান্য ক্লায়েন্ট সফ্টওয়্যারের সাথে একীকরণের জন্য একটি সরঞ্জাম (প্রতি সেপিএইপিআই নয়)

আমরা এমন একটি এপিআইও তৈরি করতে চাই যা আমাদের গ্রাহকরা তাদের নিজস্ব সংহতকরণ তৈরি করতে এটি সক্ষম করতে সক্ষম হন used আমরা নিম্নলিখিত প্রশ্নের সাথে লড়াই করছি:

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

অন্যরা একই পরিস্থিতিতে কী করেছে?


আপনি যদি এসওএর জন্য একটি সুন্দর কাঠামো কিনে থাকেন তবে এই বিতর্কটির সমস্তই মূল বিষয়। আপনি কি নিজের নিজস্ব এসওএ কাঠামো ঘূর্ণায়মান করার পরিকল্পনা করছেন? কেন? যদি এটি একটি সফল পণ্য, তবে কেন ওরাকল থেকে জিসিএপিএস লাইসেন্স দেওয়া হচ্ছে না? নাকি আইবিএম থেকে ওয়েবস্পিয়ার? তারপরে ডাব্লুএস স্তরটির সুরক্ষা সর্বব্যাপী এবং স্বচ্ছ হয়ে যায়।
এসলট

1
@ এসলট এটি একটি এসওএ স্তরটি লিখতে সত্যই কঠিন নয়। এই প্ল্যাটফর্মগুলির কোনওটিইই আরএসটি-ভিত্তিক নয়; এটা 2012 তাই না? এই শব্দগুলি ভয়ঙ্কর 'এন্টারপ্রাইজ'
ইভান প্লেস

আপনার ডোমেন মডেলটির শীর্ষে কোনও পরিষেবা স্তর কেন নেই, তবে আপনি নিজের উত্স কোডের সাহায্যে একই পরিষেবাগুলি অভ্যন্তরীণভাবে ব্যবহার করতে পারেন।
এমবিউলেজ

উত্তর:


13

নিজের ডগফুড খাওয়া সর্বদা ভাল। প্রমাণীকরণ এবং অনুমোদনের জন্য আপনি যদি কিছু ওভারহেডে ফ্যাক্ট করেন তবে একটি এপিআই দু'জনের চেয়েও বজায় রাখা সহজ হওয়া উচিত।


4
আপনি যেভাবে রেখেছেন তা আমি পছন্দ করি। দুটি পৃথক স্তর থাকার পরিণামে ভবিষ্যতে অনেক জায়গায় দুটি জায়গায় জিনিস পরিবর্তন করা, অতিরিক্ত পরীক্ষা করা এবং জিনিসগুলি সিঙ্ক থেকে বেরিয়ে গেছে কেন তা বোঝার চেষ্টা করার জন্য প্রচুর সাধারণ উন্মাদনা বোঝাতে চলেছে। আপনার উত্তরটি ভোট দেওয়ার মতো যথেষ্ট খ্যাতি থাকলে আমি করব :)
ড্রইউ গুডউইন

5

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

ব্যক্তিগত, সংবেদনশীল, পরীক্ষামূলক কাজের জায়গাগুলির অগ্রগতিতে থাকার পরেও নিজের জন্য নিজের ব্যবহার করার জন্য আপনি এখনও পাবলিক এপিআই খুব বেশি পরিবর্তন না করে নতুন স্টাফ প্রকাশ করতে এবং ব্যবহার করতে সক্ষম হন।


3
আমি মনে করি আমরা এখানে চুক্তিতে রয়েছি। অভ্যন্তরীণ ব্যবহারকারীদের কাছে কার্যকারিতার সুপারিটিকে সীমাবদ্ধ করতে সুরক্ষা স্তরটি ব্যবহার করুন। এইভাবে, আপনি একটি এপিআই পেয়েছেন তবে এপিআই অ্যাক্সেস করার জন্য একাধিক স্তরের অনুমতি রয়েছে।
অ্যানিউরিজ 9

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

4

আমি এর আগেও (বহুবার) এর মুখোমুখি হয়েছি এবং আমি যা পছন্দ করে শেষ করেছি তা হ'ল:

ওয়েবসাইট থেকে বিএল নিন। ওয়েবসাইটটিকে এপিআইর উপভোগ করুন Make ওয়েবসাইটটিকে আপনার এপিআই এর অন্য কোনও ক্লায়েন্ট হিসাবে বিবেচনা করুন। আপনার এপিআই পরিষেবা।

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

বিশ্বাস হচ্ছে না?

দৃষ্টান্তটি আরও একধাপ এগিয়ে নিন ...

ফোন অ্যাপটি এমন প্ল্যাটফর্মে চলছে যেখানে বাইটকোড কার্যকর করা হয়েছে, অ্যাপটি ফোনে থাকে এবং এইচটিটিপি / জেএসএন এর মাধ্যমে এপিআই পরিষেবা গ্রহণ করে

ওয়েবসাইটটি এমন একটি অ্যাপ্লিকেশন যা একটি প্ল্যাটফর্মে চলছে যেখানে এইচটিএমএল + জাভাস্ক্রিপ্ট কার্যকর করা হয়, অ্যাপটি ব্রাউজারে থাকে এবং এইচটিটিপি / জেএসএন এর মাধ্যমে এপিআই পরিষেবা গ্রহণ করে

একই!

ট্যাবলেট, টিভি, অন্যান্য ফোন প্ল্যাটফর্ম, প্লাগইন, তৃতীয় পক্ষের অ্যাপ্লিকেশন, ম্যাসআপস, এ এতে প্রসারিত করুন ...

প্রচুর পৃথক ব্যবহারকারীর অভিজ্ঞতা সমস্ত একটি সাধারণ এপিআইতে প্লাগ ইন করে।

আপনার অ্যাপ্লিকেশনটি হল এপিআই API ওয়েবসাইটটি কেবলমাত্র এক ক্লায়েন্ট (অনেকের)


Comprehending যে এপিআই হয় সমগ্র আবেদন স্তর, এবং বিভিন্ন সংস্করণে (ওএস, ব্রাউজার, ট্যাবলেট, ফোন) API- এর মাত্র ক্লায়েন্ট হয় আমাকে এ-হা পেয়েছিলাম! মুহূর্ত এখন।
এজেবি

2

একটি এপিআই ব্যবহার করুন

আপনি যদি সার্ভিস এপিআইটি একটি REST স্তর হিসাবে প্রয়োগ করছেন তবে কেবল সুরক্ষিত রুটগুলিতে প্রমাণীকরণ যুক্ত করুন।

আপনি সম্ভবত এমন একটি বিকাশ কাঠামো ব্যবহার করতে চাইবেন যা খুব বেশি 'জাদুতে' আবদ্ধ না হয়। সম্পূর্ণ বিপরীত প্রকৌশল ছাড়াই আপনি সরাসরি রুটগুলি সংজ্ঞায়িত করতে পারেন এমন কিছু।

নোড.জেএস / এক্সপ্রেস, পাইথন / পাইলনস, পাইথন / গুগল অ্যাপ ইঞ্জিন ইত্যাদির মতো কিছু ভাবুন

আমি সম্প্রতি এটি একটি গুগল অ্যাপ ইঞ্জিনে একটি রিস্ট / ডেটাস্টোর এপিআইয়ের জন্য প্রয়োগ করেছি এবং আমি মনে করি না এটি আরও সহজ হতে পারে। কন্ট্রোলারগুলি ক্লাস হিসাবে প্রয়োগ করা হয় এবং তাদের পরবর্তী HTTP অনুরোধগুলি (যেমন GET / POST / PUT / DELETE) সেই শ্রেণীর পদ্ধতি হিসাবে প্রয়োগ করা হয়। আমি একটি সজ্জা হিসাবে বেসিক-লেখক বাস্তবায়ন করতে পরিচালিত। এটি @basicAuth ডিকোরেটর সংযুক্ত করার মতো একটি অনুরোধে একটি প্রমাণীকরণের প্রয়োজনীয়তা যুক্ত করেছে।

এইভাবে, আমি আগত জিইটি অনুরোধগুলি সর্বজনীনভাবে সেই মডেলের জন্য একই নিয়ামকটিতে পোস্ট / পুট / ডিলেট ডিলেট অনুরোধে একটি লেখার প্রয়োজনীয়তা যুক্ত করতে পারি।

আপনি যদি REST এ কীভাবে কথা বলতে জানেন, জীবন অনেক সহজ হয়ে যায় কারণ REST সমর্থনটি ইতিমধ্যে স্বভাবতই চিরকাল ওয়েবসভারে বেকড হয় (যেমন HTTP কেবলমাত্র REST এপিআই এর এক প্রকার)। এমনকি যদি আপনি তারের ওপরে প্রচুর ডেটা প্রেরণ করেন তবে স্বচ্ছ জিজপ সংক্ষেপণের জন্যও আপনি বেছে নিতে পারেন।


-1

আমার প্রথম ধারণাটি হ'ল এটি একই এপিআই হওয়া উচিত এবং আপনার সুরক্ষা সম্পূর্ণ আলাদা স্তরে হওয়া উচিত। সম্ভবত কোনও ওয়েব ফ্রন্ট দ্বারা পরিচালিত?


2
কখনও কখনও সুরক্ষা উদ্বেগ নিছক এনক্রিপশন এবং লেনদেনের স্বাক্ষরের চেয়ে আরও গভীর খনন করে। এর মতো এটি বেশ সম্ভব যে কয়েকটি, বা এমনকি প্রচুর সুরক্ষা কেন্দ্রিক উপাদানগুলি আপনার মূল এপিআইতে সজ্জিত হয়। এটি বলেছে, যতটা সম্ভব পৃথক রাখার প্রয়াসে আমি আপনার সাথে একমত হব।
নিউটোপিয়ান
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.