একটি RESTful API একটি সম্পূর্ণ ফর্ম জন্য ডেটা সরবরাহ করা উচিত?


13

ধরা যাক আমার কাছে একটি জাভাস্ক্রিপ্ট ওয়েব অ্যাপ্লিকেশন রয়েছে যা পুরোপুরি ডেটার জন্য একটি RESTful API ব্যবহার করে।

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

{
  "id": 12345,
  "name": "Some Product",
  "active": true,
  "sales_user_id": 27
}

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

এটিকে / পণ্য / 12345 অনুরোধের প্রতিক্রিয়ার অংশ হিসাবে তৈরি করা কি বুদ্ধিযুক্ত হবে?

{
  "id": 12345,
  "name": "Some Product",
  "active": true,
  "sales_user_id": 27,
  "sales_users": [
    {"id": 1, "name": "Anna Graham"},
    {"id": 2, "name": "Dick Mussell"},
    {"id": 3, "name": "Ford Parker"},
    {"id": 4, "name": "Ferris Wheeler"},
    {"id": 5, "name": "Jo King"}
  ]
}

নতুন রেকর্ড তৈরি করার সময় কী হবে? আমার এপিআইও কি নীচের সাথে জিইটি / পণ্য / নতুনকে সাড়া দিতে হবে?

{
  "sales_users": [
    {"id": 1, "name": "Anna Graham"},
    {"id": 2, "name": "Dick Mussell"},
    {"id": 3, "name": "Ford Parker"},
    {"id": 4, "name": "Ferris Wheeler"},
    {"id": 5, "name": "Jo King"}
  ],
  "categories": [
    {"id": 1, "name": "Category 1"},
    {"id": 2, "name": "Category 2"},
    {"id": 3, "name": "Category 3"},
    {"id": 4, "name": "Category 4"},
    {"id": 5, "name": "Category 5"}
  ],
  "etc": [ ... ]
}

দয়া করে কিছু তৈরি করার জন্য জিইটি অনুরোধটি কখনই ব্যবহার করবেন না । আপনার শেষ পয়েন্টটি / পণ্য / পণ্য নয় / নতুন হওয়া উচিত । একটি নতুন পণ্য তৈরি করতে আপনার শেষ পয়েন্টে একটি PUT অনুরোধ প্রেরণ করা উচিত।
কেরেম বায়ডোয়ান

এটি কিছুই তৈরি করছে না। এটি নিখুঁতভাবে বিদ্যমান ডেটা বা একটি নতুন, এখনও সংরক্ষিত রেকর্ডের জন্য একটি টেম্পলেট জন্য অনুরোধ is
চাদ জনসন

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

উত্তর:


6

আমি খুব সাধারণ, সংকীর্ণ-দৃষ্টি নিবদ্ধ করা শেষ পয়েন্টগুলির দিকে ঝুঁকছি। আমি বিক্রয় / ব্যবহারকারীর মতো এমন কোনও স্থানে একটি অনুরোধ আশা করব যা সমস্ত বিক্রয় ব্যবহারকারীদের ফিরিয়ে দেয়।

জিইটি / বিক্রয়_ ব্যবহারকারীগণ:

[
    {"id": 1, "name": "Anna Graham"},
    {"id": 2, "name": "Dick Mussell"},
    {"id": 3, "name": "Ford Parker"},
    {"id": 4, "name": "Ferris Wheeler"},
    {"id": 5, "name": "Jo King"}
]

একইভাবে, আপনি যদি বিভাগগুলির একটি তালিকা রাখতে চান তবে আমি এটির জন্য একটি পৃথক শেষ পয়েন্ট যুক্ত করব।

জিইটি / বিভাগসমূহ:

[
    {"id": 1, "name": "Category 1"},
    {"id": 2, "name": "Category 2"},
    {"id": 3, "name": "Category 3"},
    {"id": 4, "name": "Category 4"},
    {"id": 5, "name": "Category 5"}
]

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


3

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

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

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