এপিআই ভাঙ্গা রোধে সহায়তার জন্য একজনকেই কি আরইএসটি পরিষেবাদির জন্য একটি ক্লায়েন্ট লাইব্রেরি তৈরি করা উচিত?


9

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

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

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


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

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

উত্তর:


1

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

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

https://developer.foursquare.com/overview/responses

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


1

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


1

একবারে কমপক্ষে তিনটি প্রশ্ন রয়েছে, আসুন একে একে একে করুন

  • "রেস্ট পরিষেবাটির জন্য ক্লায়েন্ট লাইব্রেরি রাখা কি ভাল ধারণা?"

সম্ভবত হ্যাঁ, যতক্ষণ না আপনি নিজের সমস্ত ইউআই কোডের মাধ্যমে স্বেচ্ছাসেবী আরএসটি কল সরাসরি ছড়িয়ে দিতে চান না।

  • "পরিষেবা স্তরটির বিকাশকারীকে এই লিবিব তৈরি এবং রক্ষণাবেক্ষণ করা কি ভাল ধারণা?"

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

  • [আমরা কি সত্য থেকে একটি সুবিধা পাব]] "যদি ক্লায়েন্ট লাইব্রেরি এপিআই পরিবর্তন হয়, তবে ইউআই কোডটি সংকলন করবে না"

আপনি কি বলেননি যে ইউআইটি পাইথনে লেখা হবে? এটি কোনও স্ট্যাটিকালি-টাইপড ভাষা নয়, তাই আমি কোনও API পরিবর্তন থেকে তাত্ক্ষণিকভাবে বিল্ড বিরতির আশা করবো না। আমি ধরে নিচ্ছি যে এই মুহুর্তে আমি আপনাকে ভুল পেয়েছি এবং আপনার এখানে একটি স্ট্যাটিকালি টাইপড এআইপি রয়েছে - তবে আপনি এপিআই-তে কিছু নতুন বৈশিষ্ট্য (নতুন optionচ্ছিক প্যারামিটারের মতো) যুক্ত করার পরে বিল্ডটি ভেঙে না দেওয়া পর্যন্ত কিছু সুবিধা পেতে পারেন । অন্যথায় আপনি আপনার দলে প্রচুর অযৌক্তিক ওভারহেড উত্পাদন করবেন।

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