একটি আরআরএস ওয়েব অ্যাপ্লিকেশনে পৃষ্ঠাগুলি


329

এটি এই প্রশ্নের আরও জেনেরিক সংস্কার (রেলগুলির নির্দিষ্ট অংশগুলি নির্মূলের সাথে)

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

1. শুধুমাত্র ক্যোয়ারী স্ট্রিং ব্যবহার করে

যেমন। http://application/products?page=2&sort_by=date&sort_how=asc
এখানে সমস্যাটি হ'ল আমি সম্পূর্ণ পৃষ্ঠার ক্যাচিং ব্যবহার করতে পারি না এবং ইউআরএল খুব পরিষ্কার এবং মনে রাখা সহজ নয়।

২. পৃষ্ঠা বাছাইয়ের জন্য উত্স এবং ক্যোয়ারী স্ট্রিং হিসাবে ব্যবহার করা

যেমন। http://application/products/page/2?sort_by=date&sort_how=asc
এই ক্ষেত্রে, যে সমস্যাটি দেখা যাচ্ছে তা http://application/products/pages/1হ'ল কোনও অনন্য সংস্থান নয় যেহেতু ব্যবহার sort_by=priceকরা সম্পূর্ণ ভিন্ন ফলাফল পেতে পারে এবং আমি এখনও পৃষ্ঠার ক্যাচিং ব্যবহার করতে পারি না।

৩. পৃষ্ঠাগুলি সংস্থান হিসাবে বাছাইয়ের জন্য একটি URL বিভাগ হিসাবে ব্যবহার করা

যেমন। http://application/products/by-date/page/2
আমি ব্যক্তিগতভাবে এই পদ্ধতিটি ব্যবহার করতে কোনও সমস্যা দেখতে পাচ্ছি না, তবে কেউ আমাকে সতর্ক করেছিলেন যে এটি যাওয়ার ভাল উপায় নয় (তিনি কোনও কারণ দেননি, সুতরাং যদি আপনি জানেন তবে কেন এটি সুপারিশ করা হয়নি, দয়া করে আমাকে জানান)

কোন পরামর্শ, মতামত, সমালোচনা স্বাগত চেয়ে বেশি। ধন্যবাদ।


34
এইটা একটা ভালো প্রশ্ন.
আইয়েন ধারক

7
বোনাস প্রশ্ন: লোকেরা সাধারণত পৃষ্ঠার আকারগুলি কীভাবে নির্দিষ্ট করে?
হাইকো রুপ

ম্যাট্রিক্স প্যারামিটারগুলি সম্পর্কে ভুলে যাবেন না w3.org/DesignIssues/MatrixURIs.html
CMCDragonkai

উত্তর:


66

আমি মনে করি সংস্করণ 3 এর সমস্যাটি আরও একটি "দৃষ্টিকোণ" সমস্যা - আপনি পৃষ্ঠাটিকে উত্স বা পৃষ্ঠার পণ্য হিসাবে দেখেন?

পৃষ্ঠাটি যদি আপনি উত্স হিসাবে দেখেন তবে এটি একটি নিখুঁত সমাধান, যেহেতু পৃষ্ঠা 2 এর কোয়েরিটি সর্বদা পৃষ্ঠা 2 উপস্থাপন করবে।

তবে আপনি যদি পৃষ্ঠায় থাকা পণ্যগুলিকে উত্স হিসাবে দেখেন তবে আপনার সমস্যা আছে যে পৃষ্ঠার ২ পৃষ্ঠার পণ্যগুলি পরিবর্তিত হতে পারে (পুরানো পণ্যগুলি মুছে ফেলা হয় বা যাই হোক না কেন), এই ক্ষেত্রে ইউআরআই সর্বদা একই উত্স (গুলি) ফেরত না।

উদাহরণস্বরূপ কোনও গ্রাহক পণ্য তালিকা পৃষ্ঠা X- এর একটি লিঙ্ক সংরক্ষণ করে, পরের বার লিংকটি প্রশ্নযুক্ত পণ্যটি খোলার পরে আর পৃষ্ঠা পৃষ্ঠায় থাকতে পারে না।


6
ভাল তবে আপনি যদি কিছু মুছেন তবে একই ইউআরআই-তে অন্য কিছু হওয়া উচিত নয়। আপনি যদি পৃষ্ঠার এক্স পৃষ্ঠার সমস্ত পণ্য মুছে ফেলেন - পৃষ্ঠা এক্সটি এখনও বৈধ হতে পারে তবে এখন পৃষ্ঠার এক্স + 1 থেকে পণ্যগুলি রয়েছে তবে আপনি যদি X পণ্য পৃষ্ঠাতে দেখেন তবে পৃষ্ঠার এক্সের জন্য ইউআরআই পৃষ্ঠার এক্স + 1 এর জন্য ইউআরআই হয়ে গেছে "।
ফিওন

1
> আপনি যদি পৃষ্ঠাটিকে উত্স হিসাবে দেখেন তবে এটি পুরোপুরি ভাল সমাধান, যেহেতু পৃষ্ঠা 2 এর ক্যোয়ারিতে পৃষ্ঠাটি 2 দেওয়া যাবে yield এটি কি কোনও অর্থবোধ করে? একই ইউআরএল (যে কোনও ইউআরএল পৃষ্ঠার উল্লেখ 2) সর্বদা পৃষ্ঠা 2 উত্সাহিত করবে আপনি উত্স হিসাবে যাই হোক না কেন।
temoto

2
উত্স হিসাবে পৃষ্ঠাটি দেখার জন্য সম্ভবত একটি নতুন পৃষ্ঠা তৈরি করার জন্য POST / foo / পৃষ্ঠার পরিচয় করা উচিত, তাই না?
temoto

18
আপনার উত্তরটি সহজেই "সঠিক সমাধানটি 1" এ চলেছে, তবে তা উল্লেখ করে না।
temoto

2
আমার মনে, পৃষ্ঠাটি একটি ভাসমান ধারণা এবং অন্তর্নিহিত ডোমেনের সাথে সম্পর্কিত নয়। এবং সুতরাং একটি উত্স হিসাবে বিবেচনা করা উচিত নয়। আমার অর্থ ভাসমান এই অর্থে যে এটি তরল, যে পৃষ্ঠার ধারণাটি প্রসঙ্গে পরিবর্তিত হয়; আপনার এপিআইর একজন ব্যবহারকারীর মোবাইল অ্যাপ্লিকেশন হতে পারে যা প্রতি পৃষ্ঠায় মাত্র 2 টি পণ্য গ্রাস করতে পারে, অন্যটি এমন একটি মেশিন অ্যাপ্লিকেশন যা পুরো অভিশাপের তালিকাটি গ্রাস করতে পারে। সংক্ষেপে, পৃষ্ঠাটি অন্তর্নিহিত ডোমেন সত্তা (পণ্য) এর "প্রতিনিধিত্ব" এবং এটি URL এর অংশ হিসাবে অন্তর্ভুক্ত করা উচিত নয়; শুধুমাত্র ক্যোয়ারি প্যারামিটার হিসাবে।
কিংজ

106

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


28
+1: ক্যোয়ারী স্ট্রিংগুলি প্রথম শ্রেণীর সংস্থান সনাক্তকারী নয়; তারা কেবল সংস্থানটি অর্ডার এবং গ্রুপিংয়ের জন্য স্পষ্টতা cla
এস .লট

1
@ S.Lott অনুরোধ হয় সম্পদ। আপনি যাকে "প্রথম-শ্রেণীর সংস্থানগুলি" বলছেন তার গবেষণার ৫.২.১.১ বিভাগে ফিল্ডিংয়ের মাধ্যমে মান হিসাবে সংজ্ঞায়িত করা হয়েছে । তদুপরি, একই বিভাগে ফিল্ডিং একটি উত্সের উদাহরণ হিসাবে একটি উত্স কোড ফাইলের সর্বশেষ সংশোধন দেয় । কীভাবে এটি কোনও সংস্থান হতে পারে তবে সর্বশেষ 10 পণ্যগুলি "পণ্য সংস্থার অনুরোধের সম্পত্তি" হতে পারে? আমি বুঝতে পারি যে আপনার দৃষ্টিভঙ্গি আরও ব্যবহারিক, তবে আমি মনে করি এটি কম কম বিশুদ্ধ।
এডসৌফি

মনে রাখবেন যে আমার মন্তব্যের অর্থ এই নয় যে আমি ইউআরএলগুলির উপর ক্যোয়ারী স্ট্রিং ব্যবহারের পছন্দের সাথে একমত নই: দু'টিই কার্যকর সমাধান হিসাবে যতক্ষণ না এপিআই হাইপারমিডিয়া-চালিত হয়, যতক্ষণ না @ রিচঅ্যাপোডা তার উত্তরে উল্লেখ করেছেন। আমি কেবল ইঙ্গিত করছি যে পৃষ্ঠাটিকে একটি REST দৃষ্টিকোণ থেকে একটি সংস্থান হিসাবে বিবেচনা করা উচিত।
এডসৌফি

37

এইচটিটিপিতে দুর্দান্ত রেঞ্জের শিরোনাম রয়েছে যা পৃষ্ঠার জন্যও উপযুক্ত। আপনি প্রেরণ করতে পারেন

Range: pages=1

শুধুমাত্র প্রথম পৃষ্ঠা আছে। এটি আপনাকে কোন পৃষ্ঠাটি পুনর্বিবেচনা করতে বাধ্য করতে পারে। হতে পারে ক্লায়েন্ট বিভিন্ন আইটেম চায়। ব্যাপ্তি শিরোনাম একটি আদেশ ঘোষণা করতেও কাজ করে:

Range: products-by-date=2009_03_27-

সমস্ত তারিখের চেয়ে নতুন তারিখ পেতে বা

Range: products-by-date=0-2009_11_30

তারিখের চেয়ে পুরানো সমস্ত পণ্য পেতে to '0' সম্ভবত সেরা সমাধান নয়, তবে আরএফসি মনে হয় রেঞ্জ শুরুর জন্য কিছু চায়। এইচটিটিপি পার্সার মোতায়েন থাকতে পারে যা ইউনিট = -রেঞ্জ_েন্ড ভাগ করবেন না।

যদি শিরোনাম কোনও (গ্রহণযোগ্য) বিকল্প না হয় তবে আমি প্রথম সমাধানটি গণনা করি (সমস্ত ক্যোয়ারী স্ট্রিংয়ে রয়েছে) পৃষ্ঠাগুলির সাথে ডিল করার একটি উপায়। তবে দয়া করে ক্যোয়ারি স্ট্রিংগুলি (বর্ণমালুর ক্রমে সাজানোর (কী = মান) জোড়া) স্বাভাবিক করুন। এটি "? A = 1 & b = x" এবং "? B = x & a = 1" পার্থক্য সমস্যা সমাধান করে।


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

3
এবং রেঞ্জ শিরোনামটি কেবল বাইট রেঞ্জের জন্য। [এইচটিটিপি শিরোলেখের স্পেস] দেখুন ( w3.org/Protocols/rfc2616/rfc2616-sec14.html ), বিভাগ 14.35।
ক্রিস ওয়েস্টিন

16
@ ক্রিসওয়েস্টিন w3.org/Potocols/rfc2616/rfc2616-sec3.html#sec3.12 HTTP / 1.1 রেঞ্জ (বিভাগ 14.35) এবং কন্টেন্ট-রেঞ্জ (বিভাগ 14.16) শিরোনাম ক্ষেত্রগুলিতে ব্যাপ্তি ইউনিট ব্যবহার করে। range-unit = bytes-unit | other-range-unit হতে পারে আপনি এটি উল্লেখ করছেন The only range unit defined by HTTP/1.1 is "bytes". HTTP/1.1 implementations MAY ignore ranges specified using other units.যা আপনার বক্তব্য হিসাবে একই নয়।
temoto

1
@ মারকাস আপনি যখন অন্য এপিআই রিসোর্স ভাগ করে নিচ্ছেন তখন আমি ব্যবহারের বিষয়টি কল্পনা করতে পারি না :)
জাকুবকেজল্লিক

@ জাকুবকেজল্লিক শেয়ারিং কোনও সমস্যা নয়, তবে পেজিংয়ের জন্য এইচটিটিপি শিরোনাম ব্যবহার করা পেজিংয়ের জন্য হেটেওএএস লিঙ্কগুলি ব্যবহার করা বাধা দেয়।
xarx

25

আপনার অ্যাপ্লিকেশনটি একই সংস্থানটির ভিন্ন দৃষ্টিভঙ্গি তৈরির কৌশল হিসাবে আপনার অ্যাপ্লিকেশনটি যেভাবে দেখায় সেই বিকল্পটি 1 টি সেরা বলে মনে হয়।

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

আপনার ক্লায়েন্ট সরবরাহ করতে পারে এমন এক লিঙ্ক হ'ল একটি পৃষ্ঠা লিঙ্ক।

এগুলির সর্বোত্তম পার্শ্ব-প্রতিক্রিয়াটি হ'ল এমনকি আপনি যদি পৃষ্ঠাগুলি ইউআরআই কাঠামোর বিষয়ে আপনার মতামত পরিবর্তন করেন এবং পরের সপ্তাহে একেবারে ভিন্ন কিছু প্রয়োগ করেন, আপনার ক্লায়েন্টরা কোনও পরিবর্তন ছাড়াই কাজ চালিয়ে যেতে পারে।


3
REST ওয়েব পরিষেবাদিগুলির লিঙ্কগুলির মতো হাইপারমিডিয়া ব্যবহারের জন্য দুর্দান্ত অনুস্মারক।
পল ডি ইডেন

11

আমি সর্বদা বিকল্পের শৈলীটি ব্যবহার করেছি my আমার ক্ষেত্রে ডেটা প্রায়শই পরিবর্তন হওয়ার কারণে ক্যাশিং কোনও উদ্বেগের বিষয় নয়। আপনি যদি পৃষ্ঠার আকারটি কনফিগার করার অনুমতি দেন তবে আবার ডেটা ক্যাশে করা যায় না।

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


1
+1 আমি মনে করি আপনি ঠিক বলেছেন এবং আমি ক্যোয়ারী প্যারামিটারগুলির সাথে যাব (বিকল্প 1)
Andi

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

8

আশ্চর্যের বিষয় যে কেউই চিহ্নিত করতে পারেন নি যে বিকল্প 3 এর একটি নির্দিষ্ট ক্রমে প্যারামিটার রয়েছে। http // অ্যাপ্লিকেশন / পণ্য / তারিখ / উতরাই / নাম / আরোহী / পৃষ্ঠা / 2 এবং http // অ্যাপ্লিকেশন / পণ্য / নাম / আরোহী / তারিখ / উতরাই / পৃষ্ঠা / 2

একই সংস্থানটিতে নির্দেশ করছে তবে সম্পূর্ণ ভিন্ন ইউআরএল রয়েছে।

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

প্যারামিটারগুলি-ইন-ইউআরএল পদ্ধতির সাথে একমাত্র উপকার হ'ল পরিষ্কার URL। যদিও আপনাকে প্যারামিটারগুলি এনকোড করার জন্য কোনও উপায় নিয়ে আসতে হবে এবং নিখুঁতভাবে সেগুলি ডিকোড করতে হবে। অবশ্যই আপনি ইউআরএললনকোড / ডিকোড দিয়ে যেতে পারেন তবে এটি আবার ইউআরএলকে কুরুচিপূর্ণ করে তুলবে :)


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

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

7

আমি কোয়েরি পরামিতি অফসেট এবং সীমা ব্যবহার করতে পছন্দ করব prefer

অফসেট : সংগ্রহের আইটেমের সূচকের জন্য।

সীমা : আইটেম গণনা জন্য।

ক্লায়েন্ট কেবল নীচে অফসেট আপডেট করা চালিয়ে যেতে পারে

offset = offset + limit

পরবর্তী পৃষ্ঠার জন্য।

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

তথ্যসূত্র: https://metamug.com/article/rest-api-developers-dilemma.html#Requesting-the-next-page


5

আমি এই সাইট জুড়ে এসেছি সেরা অনুশীলনের সন্ধান করছি:

http://www.restapitutorial.com

রিসোর্স পৃষ্ঠায় একটি .pdf ডাউনলোড করার জন্য একটি লিঙ্ক রয়েছে যাতে লেখকের পরামর্শ দেওয়া সম্পূর্ণ REST সেরা অভ্যাস রয়েছে। যার মধ্যে অন্যান্য বিষয়গুলির মধ্যে পৃষ্ঠা বাছাই সম্পর্কে একটি বিভাগ রয়েছে।

লেখক একটি রেঞ্জ শিরোলেখ ব্যবহার করে এবং ক্যোয়ারী-স্ট্রিং প্যারামিটার ব্যবহার করে উভয়কে সমর্থন যোগ করার পরামর্শ দিয়েছেন।

অনুরোধ

HTTP শিরোনাম উদাহরণ:

Range: items=0-24

ক্যোরি-স্ট্রিং প্যারামিটার উদাহরণ:

GET http://api.example.com/resources?offset=0&limit=25

যেখানে অফসেট হ'ল শুরুর আইটেম নম্বর এবং সীমাটি সর্বাধিক সংখ্যক আইটেমের প্রত্যাবর্তন।

প্রতিক্রিয়া

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

HTTP শিরোনাম উদাহরণ:

Content-Range: items 0-24/66

Content-Range: items 40-65/*

.Pdf এ আরও সুনির্দিষ্ট ক্ষেত্রে আরও কিছু পরামর্শ রয়েছে।


4

আমি বর্তমানে আমার এএসপি.নেট এমভিসি অ্যাপ্লিকেশনে এর অনুরূপ একটি স্কিম ব্যবহার করছি:

যেমন http://application/products/by-date/page/2

বিশেষত এটি: http://application/products/Date/Ascending/3

যাইহোক, এইভাবে রুটে পেজিং এবং তথ্য বাছাই সহ আমি সত্যিই খুশি নই।

আইটেমগুলির তালিকা (এই ক্ষেত্রে পণ্যগুলি) পরিবর্তনযোগ্য। অর্থাত্ পরের বার কেউ url এ ফিরে আসে যার মধ্যে পেজিং এবং বাছাই পরামিতি অন্তর্ভুক্ত থাকে, তারা প্রাপ্ত ফলাফলগুলি পরিবর্তিত হতে পারে। সুতরাং http://application/products/Date/Ascending/3একটি অনন্য url হিসাবে ধারণা যা কোনও সংজ্ঞায়িত, পণ্যগুলির অপরিবর্তনীয় সেটগুলিকে নির্দেশ করে is


1
একাধিক কলামে বাছাই সহ প্রথম সংখ্যাটি আমার মতে 3 টি পদ্ধতিতে প্রযোজ্য। সুতরাং এটি সত্যিই তাদের কারও পক্ষে সমর্থক নয়। দ্বিতীয় ইস্যুটি সম্পর্কে: এটি কোনও সংস্থানেই সুখী হতে পারে না ? উদাহরণস্বরূপ একটি পণ্য সম্পাদনা / মোছাও হতে পারে।
Andi

আমি মনে করি যে একাধিক কলামগুলিতে বাছাই করা সমস্ত 3 পদ্ধতির জন্য সত্যই 'কন' কারণ ইউআরএলটি কেবল আরও বড় এবং আরও নিয়ন্ত্রণহীন হয়ে পড়ে - তাই আমি ভিত্তিক পৃষ্ঠা / সাজানোর পরামিতিগুলিতে রূপ নেওয়ার বিবেচনা করছি reason দ্বিতীয় ইস্যুটির জন্য, আমি মনে করি যে পণ্যের আইডির মতো একটি অনন্য ধ্রুবক সনাক্তকারী এর মধ্যে মৌলিক ধারণাগত পার্থক্য রয়েছে পণ্যগুলির ক্ষণস্থায়ী তালিকার চেয়ে। মুছে ফেলা পণ্যের জন্য একটি বার্তা যেমন 'সেই পণ্যটি সিস্টেমে বিদ্যমান নেই' আপনাকে সেই পণ্য সম্পর্কে কিছু কংক্রিট বলে।
স্টিভ উইলকক

1
সমস্ত পেজিং অপসারণ এবং রুট থেকে তথ্য বাছাই করা ভাল। এবং এটি পোস্টের পরামিতিগুলিতে ঠেলে দেওয়া খারাপ। হ্যালো? REST সম্পর্কে প্রশ্ন। আমরা কেবলমাত্র REST এ ইউআরএল সংক্ষিপ্ত করতে পোষ্ট ব্যবহার করছি না। ক্রিয়া বোঝা যায়।
টেমোটো

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

1

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

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


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

0

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


0

আমি আমার প্রকল্পগুলিতে নিম্নলিখিত ইউআরএলগুলি ব্যবহার করি:

http://application/products?page=2&sort=+field1-field2

যার অর্থ - "দ্বিতীয় পৃষ্ঠাটি আমাকে ক্ষেত্র 1 দ্বারা আরোহণের আদেশ দিন এবং তারপরে ফিল্ড 2-এর মাধ্যমে উত্থিত করুন"। বা যদি আমার আরও বেশি নমনীয়তা প্রয়োজন তবে আমি ব্যবহার করি:

http://application/products?skip=20&limit=20&sort=+field1-field2

0

আমি পরের পৃষ্ঠার রেকর্ড পেতে নিদর্শনগুলিতে ব্যবহার করি। HTTP: // আবেদন / পণ্য lastRecordKey = & pageSize = 20 & সাজানোর = উচ্চক্রমে

রেকর্ডকি একটি সারণীর কলাম যা ডিবিতে ক্রমান্বয়ে মান রাখে। এটি ডিবি থেকে একবারে কেবলমাত্র একটি পৃষ্ঠার ডেটা আনতে ব্যবহৃত হয়। কতটি রেকর্ড আনতে হবে তা নির্ধারণ করতে পৃষ্ঠা আকার ব্যবহার করা হয়। সাজানো রেকর্ডটিকে আরোহী বা উতরান ক্রমে সাজানোর জন্য ব্যবহৃত হয়।

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