আপনার ইউআরএলগুলি কীভাবে দেখায় তাতে বিশ্রামের কোনও সম্পর্ক নেই। কিছু যায়। এটি আসলে একটি "বাস্তবায়ন বিশদ"। আপনি ঠিক কিভাবে আপনার ভেরিয়েবল নাম। তাদের হতে হবে সমস্ত অনন্য এবং টেকসই।
এটিতে খুব বেশি সময় নষ্ট করবেন না, কেবল একটি পছন্দ করুন এবং এতে লেগে থাকুন / ধারাবাহিক হন। উদাহরণস্বরূপ, যদি আপনি শ্রেণিবিন্যাস নিয়ে যান তবে আপনি এটি আপনার সমস্ত সংস্থার জন্য করেন। আপনি যদি কোয়েরি প্যারামিটারগুলি ... ইত্যাদি সহ যান তবে ঠিক আপনার কোডে নামকরণের কনভেনশন।
কেন এমন? যতদূর আমি জানি "রিস্টালফুল" এপিআই ব্রাউজ করার যোগ্য (আপনি জানেন ... "অ্যাপ্লিকেশন স্টেটের ইঞ্জিন হিসাবে হাইপারমিডিয়া"), সুতরাং কোনও এপিআই ক্লায়েন্ট আপনার ইউআরএলগুলি যতক্ষণ থাকবে সেদিকে খেয়াল রাখে না বৈধ (কোনও এসইও নেই, এমন কোনও মানুষ নেই যা সেই "বন্ধুত্বপূর্ণ ইউআরএলগুলি" পড়তে হবে, কেবল ডিবাগিংয়ের জন্য হতে পারে ...)
কোনও আরএসটি এপিআইএলতে ইউআরএল কতটা সুন্দর / বোধগম্য তা কেবল আপনার API এর বিকাশকারী হিসাবে API বিকাশকারী হিসাবে আকর্ষণীয়, আপনার কোডটিতে কোনও ভেরিয়েবলের নাম হবে।
সর্বাধিক গুরুত্বপূর্ণ বিষয়টি হল আপনার এপিআই ক্লায়েন্ট আপনার মিডিয়া ধরণের কীভাবে ব্যাখ্যা করতে হয় তা জানেন। উদাহরণস্বরূপ এটি জানে:
- আপনার মিডিয়া টাইপের একটি লিঙ্কের সম্পত্তি রয়েছে যা উপলভ্য / সম্পর্কিত লিঙ্কগুলি তালিকাভুক্ত করে।
- প্রতিটি লিঙ্কটি একটি সম্পর্কের মাধ্যমে সনাক্ত করা হয় (যেমন ব্রাউজারগুলি জানেন যে লিঙ্ক [rel = "স্টাইলশিট"] এর অর্থ এটি একটি স্টাইল শীট বা rel = ফেভিকো একটি ফ্যাভিকনের লিঙ্ক ...)
- এবং এটি জানা যায় যে এই সম্পর্কগুলি কী বোঝায় ("সংস্থাগুলি" অর্থ সংস্থাগুলির একটি তালিকা, "অনুসন্ধান" অর্থ সংস্থানগুলির তালিকায় অনুসন্ধান করার জন্য একটি টেম্প্লেটেড ইউআরএল, "বিভাগগুলি" অর্থ বর্তমান সংস্থার বিভাগগুলি)
নীচে এইচটিটিপি এক্সচেঞ্জের একটি উদাহরণ দেওয়া হয়েছে (মৃতদেহগুলি ইমলে রয়েছে যেহেতু এটি লেখা সহজ):
অনুরোধ
GET / HTTP/1.1
Host: api.acme.io
Accept: text/yaml, text/acme-mediatype+yaml
প্রতিক্রিয়া: মূল সংস্থানগুলির লিঙ্কগুলির একটি তালিকা (সংস্থাগুলি, লোকেরা, যাই হোক না কেন ...)
HTTP/1.1 200 OK
Date: Tue, 05 Apr 2016 15:04:00 GMT
Last-Modified: Tue, 05 Apr 2016 00:00:00 GMT
Content-Type: text/acme-mediatype+yaml
# body: this is your API's entrypoint (like a homepage)
links:
# could be some random path https://api.acme.local/modskmklmkdsml
# the only thing the API client cares about is the key (or rel) "companies"
companies: https://api.acme.local/companies
people: https://api.acme.local/people
অনুরোধ: সংস্থাগুলিতে লিঙ্ক করুন (আগের প্রতিক্রিয়ার বডি.লিঙ্কস ডটকম ব্যবহার করুন)
GET /companies HTTP/1.1
Host: api.acme.local
Accept: text/yaml, text/acme-mediatype+yaml
প্রতিক্রিয়া: সংস্থাগুলির একটি আংশিক তালিকা (আইটেমের অধীনে), সংস্থানটি সম্পর্কিত লিঙ্কগুলি অন্তর্ভুক্ত করে, পরবর্তী সংস্থাগুলি (বডি.লিংকস এনেক্সট) অনুসন্ধানের (বডি.লিংকস.আরচ) এর অন্য একটি (টেম্প্লেটেড) লিঙ্ক পাওয়ার লিঙ্কের মতো related
HTTP/1.1 200 OK
Date: Tue, 05 Apr 2016 15:06:00 GMT
Last-Modified: Tue, 05 Apr 2016 00:00:00 GMT
Content-Type: text/acme-mediatype+yaml
# body: representation of a list of companies
links:
# link to the next page
next: https://api.acme.local/companies?page=2
# templated link for search
search: https://api.acme.local/companies?query={query}
# you could provide available actions related to this resource
actions:
add:
href: https://api.acme.local/companies
method: POST
items:
- name: company1
links:
self: https://api.acme.local/companies/8er13eo
# and here is the link to departments
# again the client only cares about the key department
department: https://api.acme.local/companies/8er13eo/departments
- name: company2
links:
self: https://api.acme.local/companies/9r13d4l
# or could be in some other location !
department: https://api2.acme.local/departments?company=8er13eo
সুতরাং আপনি যেমন দেখেন যে কীভাবে আপনি লিঙ্কগুলি / সম্পর্কের পথে যান আপনার ইউআরএলগুলির পাথ অংশটি কীভাবে গঠন করেন আপনার এপিআই ক্লায়েন্টের কোনও মূল্য নেই। এবং যদি আপনি আপনার ক্লায়েন্টের সাথে আপনার ইউআরএলগুলির কাঠামোটি ডকুমেন্টেশন হিসাবে জানান, তবে আপনি আরএসটি করছেন না (বা কমপক্ষে " রিচার্ডসনের পরিপক্কতা মডেল " অনুযায়ী স্তর 3 নয় )