RESTful এপিআই পদ্ধতি; মাথা এবং বিকল্পগুলি


97

আমি পিএইচপি-তে একটি অ্যাপ্লিকেশনটির জন্য একটি RESTful API মডিউল লিখছি, এবং আমি ক্রিয়া HEADএবং এর সাথে কিছুটা মিশ্রিত হয়েছি OPTIONS

  • OPTIONS  প্রদত্ত সংস্থার জন্য উপলব্ধ HTTP ক্রিয়াগুলি পুনরুদ্ধার করতে ব্যবহৃত হয়?
  • HEAD প্রদত্ত সংস্থান পাওয়া যায় কিনা তা নির্ধারণ করতে ব্যবহৃত হয়?

যদি কেউ এই ক্রিয়াগুলি স্পষ্ট করতে পারে তবে এটির প্রশংসা হবে।

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


সম্ভবত HTTP স্পেসগুলি ওয়েবে সহজেই উপলব্ধ।
গর্ডন 16

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

15
বেশিরভাগ কিছুর জন্য চশমা ওয়েবে সহজেই উপলব্ধ। এসও সংক্রান্ত প্রশ্নগুলি ডকুমেন্টেশনের বাইরে স্পষ্ট করার জন্য। এটি এটি ফিট করে।
অ্যান্ড্রু এনসলে

উত্তর:


63

অনুসারে: http://www.w3.org/Potocols/rfc2616/rfc2616-sec9.html

9.2 বিকল্পগুলি

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

এই পদ্ধতির প্রতিক্রিয়াগুলি ক্যাশেযোগ্য নয়।

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

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

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

একটি 200 প্রতিক্রিয়ার মধ্যে এমন কোনও শিরোনাম ক্ষেত্র অন্তর্ভুক্ত থাকতে হবে যা সার্ভার দ্বারা প্রয়োগ করা thatচ্ছিক বৈশিষ্ট্যগুলি নির্দেশ করে এবং সেই সংস্থানটিতে প্রয়োগ করা হবে (যেমন, অনুমতি দিন), সম্ভবত এই স্পেসিফিকেশন দ্বারা সংজ্ঞায়িত এক্সটেনশনগুলিও অন্তর্ভুক্ত নয়। প্রতিক্রিয়া সংস্থা, যদি থাকে তবে যোগাযোগের বিকল্পগুলি সম্পর্কেও তথ্য অন্তর্ভুক্ত করা উচিত। এই জাতীয় শরীরের ফর্ম্যাটটি এই স্পেসিফিকেশন দ্বারা সংজ্ঞায়িত করা হয় না, তবে ভবিষ্যতে এইচটিটিপি থেকে এক্সটেনশন দ্বারা সংজ্ঞায়িত করা যেতে পারে। বিষয়বস্তু আলোচনার জন্য উপযুক্ত প্রতিক্রিয়া ফর্ম্যাটটি নির্বাচন করতে ব্যবহৃত হতে পারে। যদি কোনও প্রতিক্রিয়া সংস্থা অন্তর্ভুক্ত না করা হয় তবে প্রতিক্রিয়াটিতে "0" এর ক্ষেত্রের মান সহ একটি সামগ্রী-দৈর্ঘ্য ক্ষেত্র অন্তর্ভুক্ত করা উচিত।

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

9.4 মাথা

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

একটি হেড অনুরোধের প্রতিক্রিয়াটি এই অর্থে ক্যাশেযোগ্য হতে পারে যে প্রতিক্রিয়াতে থাকা তথ্যটি সেই উত্স থেকে কোনও পূর্ববর্তী ক্যাশেড সত্তা আপডেট করতে ব্যবহৃত হতে পারে। যদি নতুন ক্ষেত্রের মানগুলি নির্দেশ করে যে ক্যাশেড সত্তা বর্তমান সত্তা থেকে পৃথক হয়েছে (যেমন বিষয়বস্তু-দৈর্ঘ্য, বিষয়বস্তু-এমডি 5, ইটাগ বা সর্বশেষ-পরিবর্তিত দ্বারা চিহ্নিত করা হবে), তবে ক্যাশে অবশ্যই ক্যাশে প্রবেশকে বাসি হিসাবে বিবেচনা করবে।


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

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

ধন্যবাদ @ এসডলজি সংযুক্ত ডকটি সংক্ষিপ্ত করে, আমি CONNECTক্রিয়াটি শেষে লক্ষ্য করেছি । RESTful প্রমাণীকরণের জন্য এই পদ্ধতিটি গ্রাহ্য করা কি একটি খারাপ পছন্দ হবে?
ড্যান লাগেজ

নিশ্চিত নয় যে এই উদ্দেশ্যটি ছিল "এই স্পেসিফিকেশনটি একটি প্রক্সি দিয়ে ব্যবহারের জন্য পদ্ধতিটির নাম CONNECT সংরক্ষণ করে যা গতিশীলভাবে একটি সুড়ঙ্গ হয়ে উঠতে পারে (যেমন এসএসএল টানেলিং [44])।" ... অন্য কোনও প্রশ্ন পোস্ট করতে সহায়ক হতে পারে এটি সম্পর্কে
stackexchange.com

4
@ ড্যানলগ আপনার অ্যাপ্লিকেশনটির CONNECTকোনও এসএসএল টানেলিংয়ের পদ্ধতিতে ব্যবহার নাও করতে পারে , তবে ভাবুন কি হবে যদি আপনার অ্যাপ্লিকেশনটির কোনও গ্রাহক যদি আরসিএফ- CONNECTতে নির্দিষ্টভাবে উল্লিখিত পদ্ধতিতে প্রয়োগ করেন তবে অনুরোধগুলি আপনার কাছে না পৌঁছে দিতে পারে প্রয়োগ
স্টিভ বুজনাস

93

OPTIONSপদ্ধতিটি API সম্পর্কে তথ্য ফেরত দেয় (পদ্ধতি / সামগ্রীর ধরণ)

HEADপদ্ধতি সংস্থান সম্পর্কে তথ্য ফেরত দেয় (সংস্করণ / দৈর্ঘ্য / প্রকার)

সার্ভারের প্রতিক্রিয়া

বিকল্পগুলি

HTTP/1.1 200 OK
Allow: GET,HEAD,POST,OPTIONS,TRACE
Content-Type: text/html; charset=UTF-8
Date: Wed, 08 May 2013 10:24:43 GMT
Content-Length: 0

মাথা

HTTP/1.1 200 OK
Accept-Ranges: bytes
Content-Type: text/html; charset=UTF-8
Date: Wed, 08 May 2013 10:12:29 GMT
ETag: "780602-4f6-4db31b2978ec0"
Last-Modified: Thu, 25 Apr 2013 16:13:23 GMT
Content-Length: 1270
  • OPTIONS কোন এইচটিটিপি পদ্ধতি কোনও সংস্থান সমর্থন করে তা সনাক্তকরণ, উদাহরণস্বরূপ আমরা এটি পিটিউটের মাধ্যমে এটি মুছে ফেলতে বা আপডেট করতে পারি?
  • HEADকোনও উত্স পরিবর্তিত হয়েছে কিনা তা পরীক্ষা করা হচ্ছে। কোনও উত্সের ক্যাশেড সংস্করণ বজায় রাখার সময় এটি কার্যকর
  • HEAD সম্ভবত ব্যয়বহুল পুনরুদ্ধার করার আগে উত্স সম্পর্কে মেটাডেটা উদ্ধার করা, যেমন এর মিডিয়া টাইপ বা এর আকার
  • HEAD, OPTIONSকোনও উত্স বিদ্যমান এবং অ্যাক্সেসযোগ্য কিনা তা পরীক্ষা করা। উদাহরণস্বরূপ, একটি অ্যাপ্লিকেশনটিতে ব্যবহারকারী-জমা দেওয়া লিঙ্কগুলি বৈধকরণ

বিশ্রামদায়ক আর্কিটেকচারে শিরোনাম এবং বিকল্পগুলি কীভাবে ফিট হয় সে সম্পর্কে এখানে একটি সুন্দর এবং সংক্ষিপ্ত নিবন্ধ is


9
দুর্দান্ত উত্তর, খুব খারাপ এটি দেরিতে থেকে পার্টির জরিমানা প্রদান করবে। অনুলিপিযুক্ত স্বীকৃত উত্তর এমনকি বিশেষভাবে একটি বিশিষ্ট আর্কিটেকচারে এই ক্রিয়াগুলির স্থানটি সম্বোধন করা শুরু করে না।
টড মেনিয়ার

4
আপনার লিঙ্কটি মারা গেছে। এখানে এটির শেষ স্ন্যাপশটটি রয়েছে: web.archive.org/web/20160528151316/https://…
kolobok

31

বিকল্পগুলি আপনাকে "এই সংস্থানটির জন্য কী কী পদ্ধতিগুলি অনুমোদিত" হিসাবে জিনিসগুলি বলে tells

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


ধন্যবাদ @ কুইন্টিন; OPTIONSআমি যা অনুভব করেছি তা ছিল এবং আমার বিদ্যমান পদ্ধতির সাথে এ জাতীয় বাস্তবায়ন সহজ হবে। এসডলজির আরএফসি উদ্ধৃতি অনুসারে, OPTIONSবিন্যাসে কোনও মান নির্ধারণ করা হয়নি। এটা কি ধরে নেওয়া হয় যে প্রতিক্রিয়া ফর্ম্যাটটি অন্যান্য প্রতিক্রিয়াগুলির মতো? ( যেমন; জেএসএন, এক্সএমএল, ইত্যাদি )
ড্যান লাগ

@ টমক্যাট আরএফসির উদ্ধৃতি দিয়ে: "সামগ্রীর আলোচনার উপযুক্ত প্রতিক্রিয়া ফর্ম্যাটটি নির্বাচন করতে ব্যবহৃত হতে পারে।" অন্য কথায়: প্রতিক্রিয়ার অনুরোধটি শিরোনামটিতে যা চেয়েছিল তা হওয়া উচিত।
গর্ডন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.