এমন একটি HTTP এপিআই কল করুন যা বিশ্রামের নয়? [বন্ধ]


24

এইচটিটিপি ভিত্তিক এমন একটি এপিআইকে আপনি কী বলবেন, যে সংস্থানগুলি ব্যবহারের জন্য সংস্থানসমূহ এবং HTTP ক্রিয়াগুলির (PUT, POST, DELETE, GET ...) নামকরণের জন্য ইউআরআই ব্যবহার করে?

রায় ফিল্ডিংয়ের অভিযোগ অনুসারে এটি বিশ্রাম নয়, কারণ হাইপারমিডিয়া নেই।

অভ্যন্তরীণভাবে, আমার দলে, সবাই একে "REST এপিআই" বলে। আমি এটিকে "রেস্ট-লাইক" বলি তবে এটি বর্ণনামূলক নয় এবং এর অর্থটি অস্পষ্ট। REST সম্পর্কে প্রচুর মতবিরোধ রয়েছে বলে আমি এটি সম্পর্কে বেশ বিভ্রান্ত। আমি শিখা যুদ্ধে অংশ নিতে চাই না, তবে কেবল সঠিক পদ ব্যবহার করুন।


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

3
আপনি এটিকে কীভাবে কল করবেন এবং কী আপনি এটিকে কল করবেন তা দুটি ভিন্ন জিনিস।
জেফো

13
এই প্রশ্নটি মন্তব্যে যে ছটফটানি এবং সংশয় প্রকাশ পাচ্ছে তা কি সত্যই ওয়ারেন্ট করে? খুব সুন্দরভাবে উচ্চ-স্তরের, ঘন ঘন ব্যবহৃত ধারণার কথা উল্লেখ করার মতো একটি শালীন, বহুল-বোঝা উপায় খুঁজে পাওয়া খুব কমই বিরক্তিজনক বলে মনে হচ্ছে।
বেন অ্যারনসন

6
ব্র্যান্ডিন, শব্দ মানে জিনিস things যতক্ষণ না আমি আপনার মস্তিষ্কের কাছে একটি ইউএসবি স্টিক হুক করতে পারি এবং আমার কোডটি তাত্ক্ষণিকভাবে ডাউনলোড করতে পারি, ততক্ষণ আমার অর্থটি জানানোর জন্য আমাকে লেবেল এবং পরিভাষা ব্যবহার করতে হবে। যদি আমি "SOAP HTTP API" বলি, তার অর্থ "REST HTTP API" এর চেয়ে উল্লেখযোগ্যভাবে আলাদা কিছু হবে। জিনিসগুলির নামকরণ একটি কঠিন সমস্যা এবং এটি একটি গুরুত্বপূর্ণও।
পল ড্রাগার

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

উত্তর:


43

এটিকে একটি HTTP API বলুন

এটি HTTP স্ট্যান্ডার্ডের সাথে সামঞ্জস্য করে এবং এর উপরে শীর্ষে অন্য কোনও কিছুই নেই (যেমন SOAP)।

এইচটিটিপি স্ট্যান্ডার্ডগুলি সংস্থানসমূহ, ক্রিয়াগুলি, শিরোনামগুলি, বিষয়বস্তু সমঝোতা ইত্যাদির সংজ্ঞা দেয়

আরইএসটি (রিপ্রেসেটেশনাল স্টেট ট্রান্সফার) এমন একটি আর্কিটেকচার যা প্রয়োজনীয় এইচটিটিপি মানগুলির জন্য উপযুক্ত হয়ে ওঠে তবে এইচটিটিপি সমস্ত নিজস্বভাবে কাজ করে।


আমার অভিজ্ঞতায়, 90% "REST HTTP APIs" কে তাদের "just" একটি HTTP API বলা উচিত API

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


6
"আমার অভিজ্ঞতায়," আরএইচটি এইচটিটিপি এপিআই "এর 90% লোককে তাদের" কেবল "এইচটিটিপি এপিআই বলতে হবে।" +1
আর্তুর গ্যাস্পার

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

19

রিচার্ডসন পরিপক্কতা মডেলগুলি এরকম হয়

  1. সর্বত্র পোস্ট করুন। একটি একক শেষ পয়েন্ট। (সাবান)
  2. সর্বত্র পোস্ট করুন। একাধিক শেষ পয়েন্ট। (সম্পদ)
  3. এইচটিটিপি ভারবস। একাধিক শেষ পয়েন্ট।
  4. 2 টি পছন্দ করে এবং সংস্থানগুলিতে লিঙ্কগুলি ফেরত দেয়। (RESTful)

সুতরাং মডেল অনুসারে আমি এটিকে একটি ওয়েবসার্চ বলে যাব রিচার্ডসন স্তর 2 বা সেই লাইনগুলি বরাবর কিছু to

http://martinfowler.com/articles/richardsonMaturityModel.html


8

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

আমি সত্যই ভুল পদগুলির ব্যবহারের পক্ষে চাই না, তবে আমি মনে করি যে আরইএসটি-র সাধারণ আধুনিক ব্যাখ্যার অর্থ বেশিরভাগ মানুষের জন্য অভিন্ন URL এবং HTTP ক্রিয়া ব্যবহার করা। এটি সঠিক নয়, তবে যে কেউ ফিল্ডিংয়ের সংজ্ঞা জানেন, তাদেরও জানা উচিত যে অনেকেই তা করেন না। অন্যদিকে, যে কেউ বিদ্যমান বিদ্যমান "RESTful" এপিআইগুলি কীভাবে প্রয়োগ করা হয় তা পর্যবেক্ষণ করেই কেবল REST জানে, আপনি হেটোয়াস বা অন-ডিমান্ড কোডের মতো কম পরিচিত আরএসটি সীমাবদ্ধতার উল্লেখ করার সময় আপনি কী সম্পর্কে কথা বলছেন তা জানতে পারবেন না। ফিল্ডিং এটি পছন্দ নাও করতে পারে তবে আমি মনে করি মূল সংজ্ঞা * ফিরে পেতে দেরি হবে। এবং আসুন সত্য হয়ে উঠুন: আপনি যদি প্রথমবারের মতো কোনও তার REST এপিআই সম্পর্কে কথা শুনতে পান তবে আপনি তাত্ক্ষণিকভাবে ধরে নিবেন যে এতে হাইপারমেডিয়া অন্তর্ভুক্ত নয়, তাই না?

RESTful এর সঠিক সংজ্ঞাটির উপর জোর দেওয়া সাধারণত অতিরিক্ত বিভ্রান্তি তৈরি করে। সময়ের সাথে সাথে অনেকগুলি শর্তাদির সাথে তাদের অর্থ পরিবর্তিত হয়েছে বা জনসাধারণ সহজভাবে ভুল গ্রহণ করেছে, আমি যদি কেউ এর মূল সংজ্ঞাটি জানি তবে আমি প্রশংসা করি তবে যারা আরএসইএসটির বিস্তৃত আধুনিক ব্যাখ্যার ব্যবহার করছেন তাদের আমি সংশোধন করব না।

* এবং REST- এর মতো নন-হাইপারমেডিয়া এপিআইয়ের জন্য নতুন শর্তাদি প্রতিষ্ঠা করতে দেরি করে। আমাদের কীভাবে তাদের কল করা উচিত? ... রিস্টিশ ?


1
গিথুবের এপিআইতে প্রচুর হাইপারমিডিয়া রয়েছে। আমি জানি না যে এটি কতটা সাধারণ। আমি আপনার সাথে একমত যে 'RESTful' শব্দটি আরও জিনিস আলিঙ্গনের জন্য ফিল্ডিংয়ের নিয়ন্ত্রণ থেকে রেহাই পেয়েছে।
dcorking

2

এটি HTTP- র একটি CRUD ইন্টারফেস (তৈরি করুন, পড়ুন, আপডেট করুন, মুছুন)।

আমি এই দাবিটি ব্যাক আপ করার জন্য কোনও কর্তৃপক্ষের কথা ভাবতে পারি না, তাই আমি আশা করি আপনি আরও এবং আরও ভাল উত্তর পেয়ে যাবেন।


4
কিছু সংশ্লেষও সেই সংজ্ঞাটি ফিট করে।
ব্লারফ্ল

1
@ ব্লাফ্লাএল এএএফসিটি কিছু বিশ্রামী এপিআইএস এটির সুপারকেট হবে। রেকর্ডগুলিতে হাইপারলিংক না থাকলে এটি ফিল্ডিংয়ের সংজ্ঞা পূরণ করতে পারে না।
dcorking

2

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

আমাদের দলে আমরা আমাদের Stateless APIবিকাশের সময় নাম রেখেছিলাম কারণ আমরা প্রতিস্থাপন করছিলাম এমন একটি উত্তরাধিকারের স্টেটফুল এবং ফাংশনাল এসওএপি এপিআই ছিল (লিগ্যাসি এপিআই নিজেই কখনও সম্মত এবং অর্থপূর্ণ নাম ছিল না তাই আমরা নামগুলিতে খুব বেশি ধরা পড়িনি) )।

এখন এই প্রকল্পের কেবল একটি এপিআই রয়েছে যা এটিকে সহজভাবে বলা হয় the <project> API। যখন আমরা শেষ পর্যন্ত এটি প্রতিস্থাপন করব তখন নতুন এপিআই সহজেই পরিচিত হবে the new <project> API

এটিকে কোনও অভিনব এবং বর্ণনামূলক অভ্যন্তরীণ নাম দেওয়া প্রায় অর্থহীন unless যদি না আপনার কাছে এতগুলি API থাকে যাতে আপনার এটিকে বাকি থেকে আলাদা করতে হয় (সেক্ষেত্রে আপনার সম্ভবত অন্য সকলেরও নাম পরিবর্তন করা উচিত)।


যদিও মূল প্রশ্নটি দরিদ্র ছিল, এই উত্তরটি প্রশ্নের উত্তর দেওয়ার দৃ solid় প্রচেষ্টা
মাইকেল শ

2

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

এই শব্দটি ব্যবহার করেছেন লিওনার্ড রিচার্ডসন (যিনি রিচার্ডসন ম্যাচিউরিটি মডেলটি সংজ্ঞায়িত করেছেন যা ইতিমধ্যে অন্য জবাবের উল্লেখ করেছে - একটি রিয়েল আর্কিটেকচারের কতটা কাছাকাছি এপিআই রয়েছে তার একটি ভালভাবে গৃহীত পরিমাপ)। আপনি যদি " RESTful Web API " এর "RESTful" অংশটি ফেলে দেন তবে এটিই আপনি পাবেন ।

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