কাস্টম এইচটিটিপি পদ্ধতি বাস্তবায়নে কোনও সমস্যা আছে?


34

নিম্নলিখিত ফর্ম্যাটে আমাদের একটি URL আছে

/ উদাহরণস্বরূপ / {instanceType} / {instanceId}

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

আমরা ভেবেছিলাম আমরা কেবল কাস্টম এইচটিটিপি পদ্ধতি ব্যবহার করতে পারি যেমন: ড্রাফ্ট, ভ্যালাইডেট, কুরেট

আমি মনে করি যেহেতু মানটি বলছে এটি গ্রহণযোগ্য

"HTTP / 1.1 এর জন্য সাধারণ পদ্ধতির সেটটি নীচে সংজ্ঞায়িত করা হয়েছে this যদিও এই সেটটি প্রসারিত করা যেতে পারে, অতিরিক্ত পদ্ধতিগুলি পৃথকভাবে বর্ধিত ক্লায়েন্ট এবং সার্ভারগুলির জন্য একই শব্দার্থক ভাগ করে নেওয়া অনুমান করা যায় না।"

এবং ওয়েবড্যাভের মতো সরঞ্জামগুলি তাদের নিজস্ব কিছু এক্সটেনশন তৈরি করে।

কাস্টম পদ্ধতিতে কারও মধ্যে সমস্যা রয়েছে? আমি প্রক্সি সার্ভার এবং ফায়ারওয়ালগুলির কথা ভাবছি তবে উদ্বেগের যে কোনও ক্ষেত্র স্বাগত। আমার কি নিরাপদ পাশে থাকা উচিত এবং অ্যাকশন = বৈধতা | কিউরেট | খসড়া মত একটি URL পরামিতি থাকা উচিত?


6
আরআরএফসি ১৯২৫ থেকে আমি আবার উদ্ধৃতি দিয়েছিলাম - "প্রোটোকল ডিজাইনে, যুক্ত করার মতো কিছুই অবশিষ্ট নেই, তখন যখন পূর্ণতা পৌঁছে যায় তখন যখন কিছুই নেওয়া যায় না।" - যদি এটি কাজ করে তবে http এ যুক্ত করার কোনও কারণ নেই।

4
কিছুই ভুল হবে না, যতক্ষণ না আপনি বুঝতে পারবেন যে আপনি এখন একটি কাস্টম প্রোটোকল ব্যবহার করছেন এবং HTTP নয় TP
ব্যবহারকারী16764

10
@ ব্যবহারকারী16764 "HTTP / 1.1 এর জন্য সাধারণ পদ্ধতির সেটটি নীচে সংজ্ঞায়িত করা হয়েছে this যদিও এই সেটটি প্রসারিত করা যেতে পারে, অতিরিক্ত পদ্ধতিগুলি পৃথকভাবে বর্ধিত ক্লায়েন্ট এবং সার্ভারগুলির জন্য একই শব্দার্থক ভাগ করে নেওয়া অনুমান করা যায় না।" w3.org/Protocols/rfc2616/rfc2616-sec9.html অতএব এটি অনুমোদিত, এবং এটি এখনও এইচটিটিপি
জুয়ান মেন্ডেস

imho এইচটিটিপি থেকে যোগ / অপসারণের কিছুই নেই কারণ পদ্ধতির সংজ্ঞা অনুসারে যে কাস্টম পদ্ধতিগুলি ব্যবহার করা এইচটিটিপি / ১.১ স্কোপের মধ্যে ইতিমধ্যে গ্রহণযোগ্য তবে একই ধরণের শব্দার্থক অংশীদারি ভাগ করে নেওয়ার আশা করা যায় না, তাই আমি @ মিশেলটি এবং জুয়ান মেন্ডেস উভয় থেকেই পয়েন্টগুলি অনুমান করতে পারি কিছুটা প্রশমিত থাকুন
প্রোফ 83

উত্তর:


42

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

অভিন্ন ইন্টারফেস:

  • সহজ।
  • তারা যে পরিষেবাগুলি সরবরাহ করে সেগুলি থেকে বাস্তবায়নগুলি ডিকপল করে।
  • এইচটিটিপি লোড ব্যালেন্সার (এনগিনেক্স) এবং ক্যাশে (বার্নিশ) এর মতো জিনিস সহ একটি স্তরযুক্ত আর্কিটেকচারকে অনুমতি দেয়।

অন্যদিকে, অভিন্ন ইন্টারফেস:

  • দক্ষতা হ্রাস করে, কারণ তথ্য প্রয়োগের প্রয়োজনীয়তার সাথে সুনির্দিষ্ট নয় বরং মানক আকারে স্থানান্তরিত হয়।

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

এটি উপস্থাপনের সঠিক * উপায়টি সংস্থান (বা সম্পর্কিত সংস্থানসমূহ) এ রাষ্ট্রীয় রূপান্তর হিসাবে । আপনি কোনও পোস্ট ড্রাফ্ট করবেন না, আপনি এর draftরাজ্যে রূপান্তর করুন trueবা আপনি এমন একটি draftউত্স তৈরি করেন যা পূর্ববর্তী খসড়া সংস্করণে পরিবর্তন এবং লিঙ্ক ধারণ করে। আপনি কোনও পোস্টকে ঘৃণা করেন না, আপনি এর curatedঅবস্থানে রূপান্তর করেন trueবা এমন কোনও curationউত্স তৈরি করেন যা পোস্টটিকে এটি সংযুক্ত করে এমন লিঙ্ককে সংযুক্ত করে।

* এটি সঠিকভাবে এটি বিশ্রামের আর্কিটেকচার নীতির অনুসরণ করে।


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

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

5
আপনি নিজের HTTP পরিষেবাটি নিজের জন্য কাজ করার উপায়টি ডিজাইনে সুবিধা দেখছি। তবে "একই শব্দার্থবিজ্ঞানের অংশীদারি করার জন্য অতিরিক্ত পদ্ধতিগুলি ধরে নেওয়া যায় না" - যথেষ্ট ভাল, তবে এটি এখনও এইচটিটিপি / ১.১ সুযোগের অংশ, সুতরাং ফায়ারওয়ালস, প্রক্সি, লোড ব্যালান্সার এবং এই জাতীয় সুযোগগুলি এই সম্ভাবনার জন্য অনুমতি দেওয়া উচিত, যদি তারা না দেয় ' t তাহলে তারা কি HTTP / 1.1 যথাযথভাবে প্রয়োগ করছে না?
Prof83

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

7

আমি এগুলিকে সাবসোর্স হিসাবে ডিজাইন করতে পছন্দ করব, যার উপরে আপনি একটি পোষ্ট অনুরোধ সম্পাদন করেন।

তোমার দিকে একটি সম্পদ আছে বিবেচনা করুন /instance/type/1, আমি সম্পদ প্রতিনিধিত্ব থাকবে যেমন 'ক্রিয়া' যে সম্পদ সম্পাদনা করা যেতে পারে, এর লিঙ্ক দুয়েক বহন করা /instance/type/1/draftএবং /instance/type/1/curate। জেএসএনে, এটি এতটা সহজ হতে পারে:

{
    "some property":"the usual value",
    "state": "we can still inform the client about the current state",
    "draft": "http://server/instance/type/1/draft",
    "curate": "http://server/instance/type/1/curate"
}

curateসদস্য দ্বারা সরবরাহিত লিঙ্কে POST অনুরোধের সময় এটি কী হবে তা সম্পর্কে ক্লায়েন্টকে খুব স্পষ্টভাবে অনুমতি দেয় । সেখানে পোস্ট করা সংস্থানটিতে যুক্তিগুলির অন্তর্ভুক্ত থাকতে পারে যাতে এই ঘটনাকে বিশদভাবে বর্ণনা করা যেতে পারে যা সম্ভবত একটি রাষ্ট্রীয় রূপান্তর ঘটায়।

কোনও সংস্থার উপর সম্ভাব্য রাষ্ট্রগুলির মধ্যে সরানোর 'নিষ্পাপ' পদ্ধতির সাথে যেতে হ'ল ঘটনাগুলি এই রূপান্তরগুলির কারণ কী তা ক্যাপচার না করার অসুবিধা রয়েছে।

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


ভাল উত্তর. রাষ্ট্র-রূপান্তরগুলিতে আর্গুমেন্ট সরবরাহ করতে সক্ষম হওয়া এবং সার্ভারকে এ্যাপ্যাপুলেট করা এবং পরিচালনা করা, এখন পর্যন্ত সর্বোত্তম পন্থা।
থমাস ডাব্লু

আমি বর্তমানে যে সংস্থায় আছি (ভিএমওয়্যার) এটি করে। একটি জিইটি এর /vms/some-idমত ক্রিয়াকলাপের লিঙ্কগুলি ফেরত দেয় এবং ক্রিয়াগুলি POST /vms/some-id/restartসক্ষম করা বা অক্ষম করা উচিত কিনা তা নির্ধারণ করতে আমরা এটি ব্যবহার করি। HATEOAS এর সাথে আমার একটি প্রেম / ঘৃণার সম্পর্ক রয়েছে :)
হুয়ান মেন্ডেস

এটি যদি আরও পদক্ষেপ নিতে পারে তবে পদক্ষেপ নেওয়া হচ্ছে কিছু র্যান্ডম ক্যোয়ারী প্যারামিটার, রিসোর্স পাথ বিভাগ বা শরীরের সম্পত্তি সম্পর্কিত বনাম অনুরোধের ক্রিয়া।
ম্যাথু 8:25

আপনি কোন ক্রিয়াটির সাথে লিঙ্ক করতে পারবেন না।
ডেভ ভ্যান ডেন আয়েন্ডে

6

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

এটি CRUD এর মতো, আপনি সর্বদা এগুলি প্রয়োগ করতে চান, তবে আপনার নিজের ক্রিয়াকলাপের একটি নির্দিষ্ট সেট (প্রতি শত্রুতা)। সমস্যাগুলি কী হবে তা আমি সত্যিই দেখছি না।

এছাড়াও @ রেইন হেনরিচস "আপনি কোনও পোস্ট খোলেন না, আপনি এর খসড়া রাষ্ট্রটিকে সত্যে রূপান্তর করেন বা আপনি একটি খসড়া সংস্থান তৈরি করেন" আমার কাছে মিথ্যা বলে মনে হয়। কোনও draftsসম্পত্তি রূপান্তর করার জন্য নয়, রাষ্ট্রকে অবিচ্ছিন্নভাবে সংরক্ষণের জন্য ব্যবহার করা হবে। ক্রিয়াকলাপগুলি অগত্যা একটি 'রাষ্ট্রের' ফলাফল দেয় না বা কোনও সম্পত্তিতে সংরক্ষণ হয়। প্রতিটি রাজ্যের / রূপান্তরের জন্য পৃথক পৃথক সত্তা তৈরি করা আরও अस्पष्ट বলে মনে হয় .. সত্ত্বার একই রেফারেন্স (ইউআরআই) বজায় রাখার চেষ্টা করুন।


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