REST APIs: URL পরামিতি বনাম কাস্টম HTTP শিরোনাম


98

আপনি কখন একটি REST API এর অনুরোধ অংশে কাস্টম HTTP শিরোনাম ব্যবহার করবেন?

উদাহরণ:

আপনি কি কখনও ব্যবহার করবেন?

GET /orders/view 
(custom HTTP header) CLIENT_ID: 23

পরিবর্তে

GET /orders/view/client_id/23 or 
GET /orders/view/?client_id=23

উত্তর:


126

ইউআরএল সংস্থান নিজেই ইঙ্গিত করে। একটি "ক্লায়েন্ট", একটি সম্পদ যে সে অনুপাতে কাজ করা যেতে পারে, যাতে ভিত্তি URL অংশ হওয়া উচিত: /orders/view/client/23

প্যারামিটারগুলি কেবলমাত্র তাই, সংস্থানটিতে অ্যাক্সেসকে প্যারামিটারাইজ করতে। এটি বিশেষত পোস্ট এবং অনুসন্ধান করা খেলার মধ্যে আসে: /orders/find?q=blahblah&sort=foo। সেখানে পরামিতি ও উপ-সম্পদ মধ্যে একটি সূক্ষ্ম লাইন: /orders/view/client/23/active versus /orders/view/client/23?show=active। আমি সাব-রিসোর্স স্টাইল এবং অনুসন্ধানগুলির জন্য প্যারামিটারগুলি সংরক্ষণ করার পরামর্শ দিচ্ছি।

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

এইচটিটিপি-র শিরোনামগুলির একটি খুব বিস্তৃত নির্বাচন রয়েছে যা আপনার প্রয়োজনীয় সমস্ত কিছু কভার করে। যেখানে আমি কাস্টম শিরোলেখগুলি দেখতে পেয়েছি তা কোনও সিস্টেমের মাধ্যমে সিস্টেমের অনুরোধে ব্যবহারকারীর পক্ষে কাজ করছে। প্রক্সি সিস্টেমটি ব্যবহারকারীকে বৈধতা দেবে এবং X-User: useridশিরোলেখগুলিতে " " যোগ করবে এবং শেষ পয়েন্টটিতে আঘাতের জন্য সিস্টেম শংসাপত্রগুলি ব্যবহার করবে। প্রাপ্ত সিস্টেমটি প্রমাণীকরণ করে যে সিস্টেম শংসাপত্রগুলি ব্যবহারকারীর পক্ষে কাজ করার জন্য অনুমোদিত, তারপরে যাচাই করুন যে ব্যবহারকারী ক্রিয়াটি সম্পাদনের জন্য অনুমোদিত।


এই জাতীয় একটি উত্তরের জন্য ধন্যবাদ! আপনি কি এখনও এমন কোনও মোবাইল এপিআই-এর জন্য এক্স-ব্যবহারকারীর ব্যবহার করতে পারেন যেখানে অশুভ প্রক্সি (যা শিরোনামটি ছড়িয়ে দেয়) হওয়ার ঝুঁকি এখনও বেশি?
ভ্যাসিল কোতোভানু

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

8
তৃতীয় অনুচ্ছেদটি আমি এসও ;
অ্যালিস্টায়ার 77

4
@ নিলস্কর্ভা দুর্দান্ত ব্যাখ্যা! আমি যদি চাই যে ব্যবহারকারী কোনও অনুমোদিত ধারক (আমার মোবাইল অ্যাপের মতো) এর মাধ্যমে আমার API এর সাথে ইন্টারঅ্যাক্ট করতে পারে? আমি এখন যা করছি তা হ'ল আমার মোবাইল অ্যাপটি নিজে থেকে কোনও ক্রিয়া সম্পাদনের জন্য অনুমোদিত নয় এবং শেষ ব্যবহারকারীও নয় .. যদি ব্যবহারকারী কোনও ক্রিয়া সম্পাদন করতে রাজি থাকে তবে উভয় শংসাপত্র উপস্থিত থাকতে হবে।
বলবোল

6

কাস্টম শিরোনামগুলির নিম্নলিখিত সুবিধা রয়েছে:

  • নেটওয়ার্ক সরঞ্জাম / স্ক্রিপ্টগুলি দ্বারা সহজেই পড়া যায় (প্রমাণীকরণ, মেটা তথ্য, ...)
  • সুরক্ষা সামগ্রী থেকে ইউআরএল মুক্ত রাখে (নিরাপদ, ব্রাউজার / প্রক্সি ক্যাশে নয়)
  • ইউআরএলগুলি পরিষ্কার রাখে: উত্সগুলির আরও ভাল ক্যাশে দেওয়ার অনুমতি দেয়

তারা নীরবে প্রক্সি দ্বারা
ছাঁটা

ভাল পয়েন্ট @fusi ... এখানে এটি সম্পর্কে বিষয়: stackoverflow.com/questions/20820572/...
ক্রিস্টোফ Roussy

5

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


আন্তরিকভাবে একমত ... কোনও কাজ সম্পাদনের জন্য যদি কোনও মানক উপায় থাকে তবে চাকাটিকে পুনরায় উদ্ভাবন করবেন না।
আলেসান্দ্রো শান্তিনি

5

আপনি কখন ব্যবহার করবেন ... একটি REST API এর অনুরোধ অংশে HTTP শিরোনাম?

প্রমাণীকরণ: জিআইডি, মৌলিক প্রমাণীকরণ, কাস্টম টোকেন ইত্যাদি eg উদাহরণস্বরূপ, ব্যবহারকারীর নাম / পাসওয়ার্ডের পরিবর্তে আরআরএসটি এপিআইয়ের জন্য একটি গাইড টোকেন সহ বেসিক প্রমাণীকরণ

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


1

আরআরটিএসের জন্য কোনও মানদণ্ড নেই তবে গৃহীত উপায়টি হবে

GET /orders/view/23

কাস্টম শিরোনাম ব্যবহার না করে এবং তাই 23 টির পরে আইডিকে ধরে নিয়েছে তাই আপনার আইডিতে একটি ফাংশন থাকবে এবং তাই কেবলমাত্র সেই তথ্যটি উত্পন্ন করে।


1

আমি কাস্টম শিরোনাম ব্যবহার করব না কারণ আপনি জানেন না যে কোনও প্রক্সি সেগুলি পাস করবে কিনা। ইউআরএল ভিত্তিক হ'ল উপায়।

জিইটি / অর্ডার / ভিউ / ক্লায়েন্ট / 23


4
আমি কাস্টম হেডারগুলির সুপারিশ করব না, তবে ভাঙা প্রক্সিগুলির কারণ নয়। প্রক্সিটি নষ্ট হয়ে গেছে এটি ঠিক করা উচিত।
জুলিয়ান রেসকে

1

অবশ্যই ঠিক আছে:

GET /orders/view/client_id/23 or 
GET /orders/view/?client_id=23

ঠিক আছে:

GET /orders/view/23 or 

আমি মনে করি এটিও ঠিক হবে:

POST /orders/view 
(custom HTTP header) CLIENT_ID: 23

"/ অর্ডার / ভিউ / 23" এর মতো কিছুতে লোকেশন শিরোনাম সেট করে REST- পূর্ণ POST প্রতিক্রিয়া একটি HTTP 303 হওয়া উচিত।
ধনী রিমার

0

এনভেলপিং কোনও ভাল অনুশীলন নয় বিবেচনা করে আপনি আংশিক প্রক্রিয়াজাত অনুরোধ সম্পর্কে আরও তথ্য অন্তর্ভুক্ত করতে কাস্টম শিরোনাম ব্যবহার করতে পারেন । শিরোনামগুলি নিরাপদ

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