কোনও আইপিআই অবজেক্টের সংজ্ঞাটির জন্য তৃতীয় পক্ষের রেফারেন্স আইডিকে বৈশিষ্ট্য হিসাবে অন্তর্ভুক্ত করা কি খারাপ অভ্যাস?


9

এটার মত:

Campaign:
type: object
properties:
  id: 
    type: string
    description: "A GUID identifier"
  referenceId:
    type: string
    description: "A consumers identifier they have used to map their own systems logic to this object."
  name:
    type: string
    description: "'Great Campaign 2017' as an example"

আমি রেফারেন্স আইডি সম্পর্কে উদ্বিগ্ন ।

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

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

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

কোনও এপিআই-এর জন্য সর্বজনীন অবজেক্ট সংজ্ঞাগুলিতে তৃতীয় পক্ষের রেফারেন্স আইডি ক্ষেত্রগুলিকে মঞ্জুরি দেওয়ার জন্য খারাপ অনুশীলন বা খারাপ ডিজাইন হিসাবে বিবেচিত হয়?

উত্তর:


13

এটা কোন সমস্যা না; এটি একটি প্রয়োজনীয়তা। গ্রাহক সিস্টেমের সাথে সংহত করার জন্য এই ক্ষেত্রের অভাব সমস্যাযুক্ত হবে।

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

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

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

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


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

1

আমি মনে করি না যে এটি সম্পর্কে একটি সর্বোত্তম অনুশীলন আছে। referenceIdতৃতীয় পক্ষের ক্লায়েন্টগুলির সাথে আপনার সম্পর্কের উপর নির্ভর করে আপনার সিস্টেমে একটি অস্বচ্ছ রাখা প্রয়োজন required

কড়া কথায় বলতে গেলে, সম্ভবত আপনার মডেল এবং তৃতীয় পক্ষের মডেলটির মধ্যে মানচিত্র তৈরি করা আপনার সিস্টেমের দায়িত্ব নয়। এটা তাদের. আপনি কেবল তাদের ধরে রেখে সেই ম্যাপিং করতে তাদের সহায়তা করুনreferenceId

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


0

তৃতীয় পক্ষের রেফারেন্সগুলি একটি ভাল ধারণা যেখানে কোনও নির্দিষ্ট ডেটা তৃতীয় পক্ষের মালিকানাধীন এবং আপনি কেবল একজন রক্ষক।

এটি লেখার / আপডেটের জন্য আদর্শশক্তির জন্য একটি ব্যবস্থা স্থাপনে অত্যন্ত সহায়ক helpful

সুতরাং, প্রথম অংশে, সেই রেফারেন্সের চারপাশে চুক্তিটি স্থাপন করা গুরুত্বপূর্ণ is যদি এটি অনন্য হয়, তবে এটি উপযুক্ত যুক্তি এবং সতর্কতা / লেখার ক্ষেত্রে ত্রুটি কোডগুলি প্রয়োগ করুন।

নমনীয়তার জন্য, রেফারেন্সগুলি স্বেচ্ছাসেবী স্ট্রিংগুলির জন্য এটি সাধারণ।

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

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

বাহ্যিক এপিআই-তে, সনাক্তকারী ব্যবহার করে কোয়েরিগুলিকে অনুমতি দিন। আপনি এটি একটি পৃথক সমাপ্তিদ্বীপ, বা (আরএসটি বিশ্বে) ক্যোয়ারী প্যারামিটার ব্যবহার করে করতে পারেন।

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

ব্যর্থ যে আপনি অপারেশন লেনদেন আইডি এর / বার্তা আইডি ব্যবহার করতে পারেন, তবে এটি প্রশ্নের সুযোগের বাইরে।


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

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