REST এ সত্তার সম্পর্ক তৈরি করা: আমি কি কোনও শিশু আইডিতে পোস্ট করে পিতামাতাকে তৈরি করতে পারি?


9

আমরা বর্তমানে ক্লাসিকাল গ্রাহকের ডেটা অ্যাক্সেস করার জন্য একটি REST এপিআই ডিজাইন করছি। এপিআই-এর অন্যতম উপাদান হ'ল ব্যবহারকারীর সম্পদ the সম্পদগুলি একটি প্রদত্ত পরিষেবার অধীনে যুক্ত করা হয়। ব্যাকএন্ড এপিআই কেবল প্রদত্ত পরিষেবার অধীনে কোনও ব্যবহারকারীর জন্য একটি সম্পদ যুক্ত করবে। সুতরাং, কোনও ব্যবহারকারীর - সম্পত্তির সম্পর্ক নেই, তবে একজন ব্যবহারকারী - [পরিষেবা] - সম্পদ সম্পর্ক।

আমাদের ইউআরআই এর চেহারা হবে:

/users/{id}/assets/{id}/services/{id}

নতুন এন্ট্রি তৈরি করতে এপিআই এর ব্যবহারগুলি সম্পদ আইডি এবং পরিষেবা আইডি জানবে। আমরা যার সাথে লড়াই করে যাচ্ছি তা হ'ল এই সম্পর্কের সৃষ্টি।

একটি সহজ উপায় হ'ল পুরো সম্পর্কটি পোস্ট করা /users/{id}/assets/

POST /users/{id}/assets    
{asset:${id}, service:{id}, attribute1:"{var}", attribute2:"{var}"}

তবে তারপরে আমরা ইউআরআই নির্দেশিত হিসাবে কোনও সম্পদ তৈরি করছি না, তবে একটি সম্পদ-পরিষেবার সম্পর্ক relation

বিকল্প হিসাবে, আমরা ইউআরআই-এর সাথে পোস্টের বিষয়টি বিবেচনা করছি, যেমন:

POST /users/{id}/assets/{id}/service/{id}
{attribute1:"{var}", attribute2:"{var}"}

তবে এই ক্ষেত্রে, উত্সের পথটি /users/{id}/assets/{id}পোস্টের আগে উপস্থিত থাকবে না এবং পার্শ্ব-প্রতিক্রিয়া হিসাবে তৈরি করা হবে।

পোস্ট কি এমন একটি সংস্থান পথের পক্ষে যা এখনও বিদ্যমান নেই?

আপনার চিন্তাভাবনার জন্য ধন্যবাদ,

জেরার্ড।

উত্তর:


3

দেখে মনে হচ্ছে আপনি পরামর্শ দিচ্ছেন যে, যখনই কোনও ব্যবহারকারী অস্তিত্বহীন সম্পর্কের জন্য প্রথম পোস্ট করেন আপনি পোস্টের অংশ হিসাবে এটি তৈরি করবেন।

এই ধরণের তৈরি-অ্যাক্সেস প্যাটার্নটি যদি বৈধ, গ্রহণযোগ্য বিকাশের ধরণ কিনা তা যদি আপনি জিজ্ঞাসা করেন তবে উত্তরটি হ্যাঁ এটি হ'ল - এটি উভয়ই বৈধ, এবং দেখতে বেশ সাধারণ প্যাটার্ন।


1
উত্তরের জন্য ধন্যবাদ. কিছু পরামর্শের জন্য কোনও পয়েন্টার যা আমি পরামর্শ করতে পারি?
maasg

2

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

দ্বিতীয়: আপনার জেএসওএন সঠিক নয়, আপনাকে সম্পদ সামগ্রীর অভ্যন্তরে অন্য কোনও অবজেক্ট হিসাবে পরিষেবাটি মোকাবেলা করতে হবে এবং রিসোর্স ইউআরআই পরিষেবা "s" এর হিসাবে আপনাকে এটিকে অ্যারে হিসাবে ডিল করতে হবে।

POST /users/{id}/assets    
{asset:${id}, service:{id}, attribute1:"{var}", attribute2:"{var}"}

হতে হবে:

POST /users/{id}/assets    
{services:[{ attribute1:"var", attribute2:"var"}]}

আপনি যদি এইভাবে ব্যবহার করতে যাচ্ছেন

তৃতীয়: আমি ডিজাইন প্রস্তাবের জন্য এইভাবে ব্যবহার করতে পছন্দ করি না, যদি এই ক্ষেত্রে ব্যর্থ হয় তবে কীভাবে আপনি জানতে পারেন যে সম্পদ বা পরিষেবা তৈরি করার সময় এটি ব্যর্থ হয়েছে,


0

এখানে চিন্তার একটি ভিন্ন লাইন:

POST /relationships
{ relationship:${id}, asset:{id}, service:{id}, user:{id}, data:"some data" }

এইভাবে আপনি সম্পদ, পরিষেবা এবং ব্যবহারকারীর মধ্যে কোনও ত্রিপক্ষীয় লিঙ্ক হিসাবে সম্পর্কগুলিকে অস্বীকার করছেন এবং কোনও শ্রেণিবদ্ধ সম্পর্ককে বোঝাচ্ছেন না

এরপরে আপনি একটি নির্দিষ্ট সম্পর্ক পুনরুদ্ধার করতে পারেন:

GET /relationships?id="2144321"

বা সম্পর্কের একটি উপসেট এর দ্বারা অনুসন্ধান করুন:

GET /relationships?user="43434"

অথবা

GET /relationships?asset="12433"

মূল উপায়টি ভুল নয়, তবে এই পদ্ধতির সাহায্যে আপনি কে এটি ব্যবহার করবেন তার চেয়ে বেশি নমনীয়তা পেতে পারে।

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