RESTful প্রোগ্রামিং ঠিক কী?
RESTful প্রোগ্রামিং ঠিক কী?
উত্তর:
একটি স্থাপত্য শৈলী নামক বাকি (প্রতিনিধিত্বমূলক রাজ্য স্থানান্তর) অত্যাবশ্যক যে ওয়েব অ্যাপ্লিকেশনের HTTP- র ব্যবহার করা উচিত যেমন ছিল মূলত envisioned । চেহারাগুলির GET
অনুরোধগুলি ব্যবহার করা উচিত । PUT
, POST
এবং DELETE
অনুরোধগুলি যথাক্রমে পরিব্যক্তি, সৃষ্টি এবং মুছে ফেলার জন্য ব্যবহার করা উচিত ।
বিশ্রামের প্রবক্তারা ইউআরএল যেমন পছন্দ করে
http://myserver.com/catalog/item/1729
তবে REST আর্কিটেকচারের জন্য এই "সুন্দর URL গুলি" লাগবে না। একটি প্যারামিটার সহ একটি জিইটি অনুরোধ
http://myserver.com/catalog?item=1729
বিশ্রাম হিসাবে প্রতিটি বিট।
মনে রাখবেন যে তথ্য আপডেট করার জন্য জিইটি অনুরোধগুলি কখনই ব্যবহার করা উচিত নয়। উদাহরণস্বরূপ, একটি কার্টে একটি আইটেম যুক্ত করার জন্য একটি জিইটি অনুরোধ
http://myserver.com/addToCart?cart=314159&item=1729
উপযুক্ত হবে না। জিইটি অনুরোধগুলি আদর্শবান হতে হবে । অর্থাত, দু'বার অনুরোধ জারি করা একবারে জারি করার চেয়ে আলাদা হওয়া উচিত না। অনুরোধগুলি ক্যাশেযোগ্য করে তোলে। একটি "কার্টে যুক্ত করুন" অনুরোধ আদর্শহীন নয় it এটি দুটিবার জারি করে কার্টে আইটেমের দুটি অনুলিপি যুক্ত করে। একটি পোস্ট অনুরোধ স্পষ্টভাবে এই প্রসঙ্গে উপযুক্ত। সুতরাং, এমনকি একটি বিশ্রামযুক্ত ওয়েব অ্যাপ্লিকেশনকে তার পোস্টের অনুরোধগুলির ভাগ প্রয়োজন।
এটি ডেভিড এম জিয়ারির দুর্দান্ত জাভা কোর সার্ভার ফেসবুক বই থেকে নেওয়া হয়েছে ।
REST হ'ল ওয়েবে অন্তর্নিহিত স্থাপত্য নীতি। ওয়েব সম্পর্কে আশ্চর্যজনক বিষয়টি হ'ল ক্লায়েন্ট (ব্রাউজারগুলি) এবং সার্ভারগুলি ক্লায়েন্টকে সার্ভার এবং এটির হোস্ট সংস্থানগুলি সম্পর্কে আগেই কিছু না জেনে জটিল উপায়ে ইন্টারঅ্যাক্ট করতে পারে। মূল সীমাবদ্ধতা হ'ল সার্ভার এবং ক্লায়েন্ট উভয়ই ব্যবহৃত মিডিয়াতে সম্মত হতে হবে , যা ওয়েবের ক্ষেত্রে এইচটিএমএল ।
REST এর নীতিগুলি মেনে চলে এমন একটি API এর ক্লায়েন্টকে এপিআই এর কাঠামো সম্পর্কে কিছু জানতে প্রয়োজন হয় না। বরং সার্ভারের সাথে ক্লায়েন্টের পরিষেবার সাথে ইন্টারঅ্যাক্ট করার জন্য প্রয়োজনীয় তথ্য সরবরাহ করা দরকার। একটি HTML ফর্ম এই একটি উদাহরণ: সার্ভারে সম্পদ ও প্রয়োজনীয় ক্ষেত্রগুলি অবস্থান নির্দিষ্ট করে। ব্রাউজারটি আগে কোথায় তথ্য জমাতে হবে তা জানে না এবং কোন তথ্যটি জমা দিতে হবে তা আগেই জানে না। উভয় তথ্যই সার্ভার দ্বারা সম্পূর্ণ সরবরাহ করা হয়। (এই নীতিটিকে হেটোয়াস বলা হয় : অ্যাপ্লিকেশন স্টেটের ইঞ্জিন হিসাবে হাইপারমিডিয়া ))
সুতরাং, এটি কীভাবে এইচটিটিপি-র ক্ষেত্রে প্রযোজ্য এবং বাস্তবে এটি কীভাবে প্রয়োগ করা যেতে পারে? এইচটিটিপি ক্রিয়াকলাপ এবং সংস্থানগুলি ঘিরে থাকে। মূলধারার ব্যবহার দুটি ক্রিয়া হয় GET
এবং POST
, যা আমি মনে করি সবাই চিনতে পারবে। তবে, এইচটিটিপি স্ট্যান্ডার্ড আরও কয়েকটি যেমন PUT
এবং হিসাবে সংজ্ঞায়িত করে DELETE
। সার্ভারের দেওয়া নির্দেশাবলী অনুসারে এই ক্রিয়াগুলি সংস্থানগুলিতে প্রয়োগ করা হয়।
উদাহরণস্বরূপ, আসুন কল্পনা করুন যে আমাদের কাছে একটি ব্যবহারকারীর ডাটাবেস রয়েছে যা ওয়েব পরিষেবা দ্বারা পরিচালিত হয়। আমাদের পরিষেবাটি জেএসএন-এর উপর ভিত্তি করে একটি কাস্টম হাইপারমিডিয়া ব্যবহার করে, যার জন্য আমরা মাইমেটাইপ বরাদ্দ করি application/json+userdb
(এতে একটি application/xml+userdb
এবং application/whatever+userdb
অনেকগুলি মিডিয়া প্রকার সমর্থিত হতে পারে) supported ক্লায়েন্ট এবং সার্ভার উভয়ই এই ফর্ম্যাটটি বোঝার জন্য প্রোগ্রাম করা হয়েছে তবে তারা একে অপরের সম্পর্কে কিছুই জানে না। রায় ফিল্ডিং যেমন উল্লেখ করেছে:
একটি REST এপিআই এর প্রায় সমস্ত বর্ণনামূলক প্রচেষ্টাকে সম্পদ উপস্থাপন এবং ড্রাইভিং অ্যাপ্লিকেশন রাষ্ট্রের জন্য ব্যবহৃত মিডিয়া ধরণের (গুলি) সংজ্ঞায়িত করতে বা বিদ্যমান স্ট্যান্ডার্ড মিডিয়া প্রকারের জন্য প্রসারিত সম্পর্কের নাম এবং / অথবা হাইপারটেক্সট-সক্ষম মার্ক-আপ সংজ্ঞায়িত করতে ব্যয় করা উচিত।
বেস উত্সের জন্য একটি অনুরোধটি /
এরকম কিছু ফিরে আসতে পারে:
অনুরোধ
GET /
Accept: application/json+userdb
প্রতিক্রিয়া
200 OK
Content-Type: application/json+userdb
{
"version": "1.0",
"links": [
{
"href": "/user",
"rel": "list",
"method": "GET"
},
{
"href": "/user",
"rel": "create",
"method": "POST"
}
]
}
আমরা আমাদের মিডিয়ার বিবরণ থেকে জানি যে "লিঙ্কগুলি" নামক বিভাগগুলি থেকে আমরা সম্পর্কিত সংস্থানগুলি সম্পর্কিত তথ্য পেতে পারি। একে হাইপারমিডিয়া নিয়ন্ত্রণ বলে । এই ক্ষেত্রে, আমরা এই জাতীয় বিভাগ থেকে বলতে পারি যে এর জন্য অন্য একটি অনুরোধ করে আমরা একটি ব্যবহারকারী তালিকা পেতে পারি /user
:
অনুরোধ
GET /user
Accept: application/json+userdb
প্রতিক্রিয়া
200 OK
Content-Type: application/json+userdb
{
"users": [
{
"id": 1,
"name": "Emil",
"country: "Sweden",
"links": [
{
"href": "/user/1",
"rel": "self",
"method": "GET"
},
{
"href": "/user/1",
"rel": "edit",
"method": "PUT"
},
{
"href": "/user/1",
"rel": "delete",
"method": "DELETE"
}
]
},
{
"id": 2,
"name": "Adam",
"country: "Scotland",
"links": [
{
"href": "/user/2",
"rel": "self",
"method": "GET"
},
{
"href": "/user/2",
"rel": "edit",
"method": "PUT"
},
{
"href": "/user/2",
"rel": "delete",
"method": "DELETE"
}
]
}
],
"links": [
{
"href": "/user",
"rel": "create",
"method": "POST"
}
]
}
আমরা এই প্রতিক্রিয়া থেকে অনেক কিছু বলতে পারি। উদাহরণস্বরূপ, আমরা এখন জানি POST
যে এগুলিতে আইং দিয়ে আমরা একটি নতুন ব্যবহারকারী তৈরি করতে পারি /user
:
অনুরোধ
POST /user
Accept: application/json+userdb
Content-Type: application/json+userdb
{
"name": "Karl",
"country": "Austria"
}
প্রতিক্রিয়া
201 Created
Content-Type: application/json+userdb
{
"user": {
"id": 3,
"name": "Karl",
"country": "Austria",
"links": [
{
"href": "/user/3",
"rel": "self",
"method": "GET"
},
{
"href": "/user/3",
"rel": "edit",
"method": "PUT"
},
{
"href": "/user/3",
"rel": "delete",
"method": "DELETE"
}
]
},
"links": {
"href": "/user",
"rel": "list",
"method": "GET"
}
}
আমরা এটিও জানি যে আমরা বিদ্যমান ডেটা পরিবর্তন করতে পারি:
অনুরোধ
PUT /user/1
Accept: application/json+userdb
Content-Type: application/json+userdb
{
"name": "Emil",
"country": "Bhutan"
}
প্রতিক্রিয়া
200 OK
Content-Type: application/json+userdb
{
"user": {
"id": 1,
"name": "Emil",
"country": "Bhutan",
"links": [
{
"href": "/user/1",
"rel": "self",
"method": "GET"
},
{
"href": "/user/1",
"rel": "edit",
"method": "PUT"
},
{
"href": "/user/1",
"rel": "delete",
"method": "DELETE"
}
]
},
"links": {
"href": "/user",
"rel": "list",
"method": "GET"
}
}
বিজ্ঞপ্তিটি আমরা বিভিন্ন HTTP- র ক্রিয়া ব্যবহার করছেন ( GET
, PUT
, POST
, DELETE
ইত্যাদি) এই সম্পদের নিপূণভাবে, এবং শুধুমাত্র জ্ঞান আমরা ক্লায়েন্টের পক্ষ থেকে অনুমান আমাদের মিডিয়া সংজ্ঞা নেই।
আরও পড়া:
(এই উত্তরটি বিন্দুটি হারিয়ে যাওয়ার জন্য ন্যায্য পরিমাণ সমালোচনার বিষয় হয়ে দাঁড়িয়েছে the বেশিরভাগ অংশে এটি একটি ন্যায্য সমালোচনা হয়ে গেছে I আমি মূলত যা বর্ণনা করেছি তার সাথে সামঞ্জস্য ছিল যে কয়েক বছর আগে আমি যখন REST সাধারণত কার্যকর হয়েছিল তখনই I প্রথমে এটির সত্যিকার অর্থের চেয়ে এটি লিখেছিল the আসল অর্থটি আরও ভালভাবে উপস্থাপন করার জন্য আমি উত্তরটি সংশোধন করেছি))
RESTful প্রোগ্রামিং সম্পর্কে:
Create
, Retrieve
, Update
, Delete
হয়ে POST
, GET
, PUT
, এবং DELETE
। তবে REST টি এইচটিটিপি-তে সীমাবদ্ধ নয়, এটি এখনই সর্বাধিক ব্যবহৃত পরিবহণ।REST এর পরিণতি এবং সামগ্রিক কার্যকারিতার দিক থেকে শেষটি সম্ভবত সবচেয়ে গুরুত্বপূর্ণ। সামগ্রিকভাবে, বেশিরভাগই RESTful আলোচনাগুলি HTTP এবং ব্রাউজার থেকে এর ব্যবহার এবং কী না তা কেন্দ্র করে বলে মনে হয়। আমি বুঝতে পারি যে আরডি ফিল্ডিং এই শব্দটি তৈরি করেছিলেন যখন তিনি এইচটিটিপি-র দিকে নিয়ে যাওয়া আর্কিটেকচার এবং সিদ্ধান্তগুলি বর্ণনা করেছিলেন। তাঁর থিসিসটি এইচটিটিপি-র চেয়ে আর্কিটেকচার এবং সংস্থানসমূহের ক্যাশে-দক্ষতা সম্পর্কে বেশি।
আপনি যদি সত্যিই আধ্যাত্মিক আর্কিটেকচারটি কী এবং কেন এটি কাজ করে সে সম্পর্কে আগ্রহী হন, তবে তাঁর থিসিসটি কয়েকবার পড়ুন এবং পুরো বিষয়টি কেবল অধ্যায় 5 নন! ডিএনএস কেন কাজ করে তা পরবর্তী তদন্ত করুন । ডিএনএসের শ্রেণিবদ্ধ সংস্থা এবং রেফারেলগুলি কীভাবে কাজ করে সে সম্পর্কে পড়ুন। তারপরে ডিএনএস ক্যাশে কীভাবে কাজ করে তা পড়ুন এবং বিবেচনা করুন। শেষ অবধি , এইচটিটিপি স্পেসিফিকেশনগুলি পড়ুন ( বিশেষত আরএফসি 2616 এবং আরএফসি 3040 ) এবং কেন এবং কেন ক্যাচিং সেইভাবে কাজ করে তা বিবেচনা করুন। শেষ পর্যন্ত, এটি ক্লিক করবে। আমার জন্য চূড়ান্ত উদ্ঘাটনটি যখন আমি ডিএনএস এবং এইচটিটিপি-র মধ্যে মিল খুঁজে পেয়েছিলাম saw এর পরে, এসওএ এবং বার্তা পাসিং ইন্টারফেসগুলি কেন স্কেবলযোগ্য তা বোঝার জন্য ক্লিক করা শুরু হয়।
আমি মনে করি যে কোনও রেস্ট্রুল এবং শেয়ার্ড কিছুই নয় স্থাপত্যের স্থাপত্য গুরুত্ব এবং পারফরম্যান্সের প্রভাবগুলি বোঝার সর্বাধিক গুরুত্বপূর্ণ কৌশলটি প্রযুক্তি এবং বাস্তবায়নের বিবরণে ঝাঁপিয়ে পড়া এড়ানো। কারা সংস্থান গ্রহণের মালিকানাধীন, সেগুলি তৈরি / রক্ষণাবেক্ষণের জন্য দায়বদ্ধ ইত্যাদি বিষয়ে মনোনিবেশ করুন তারপরে উপস্থাপনা, প্রোটোকল এবং প্রযুক্তিগুলি সম্পর্কে চিন্তা করুন।
PUT
এবং POST
আপডেট এবং তৈরি করে সত্যই একের সাথে এক ম্যাপ করবেন না। PUT
ক্লায়েন্টটি ইউআরআই কী হবে তা নির্দেশ দিলে তা তৈরি করতে ব্যবহার করা যেতে পারে। POST
সার্ভারটি নতুন ইউআরআই নির্ধারণ করে দিলে তৈরি করে।
urn:
স্কিমটি ব্যবহার করে । ধারণাগতভাবে কোনও পার্থক্য নেই; তবে, একটি ইউআরএন প্রয়োজন হয় যে ইউআরএন দ্বারা সংস্থানিত সংস্থানটি চিহ্নিত (নাম দেওয়া) "সনাক্ত" করার জন্য আপনার একটি পৃথক সংজ্ঞায়িত পদ্ধতি রয়েছে। নামকরণকৃত সংস্থান এবং তাদের অবস্থান সম্পর্কিত ক্ষেত্রে আপনি যদি অন্তর্নিহিত সংযুক্তির পরিচয় না দেন সেদিকে খেয়াল রাখতে হবে।
এটি দেখতে এটির মতো দেখাচ্ছে।
তিনটি বৈশিষ্ট্য সহ একটি ব্যবহারকারী তৈরি করুন:
POST /user
fname=John&lname=Doe&age=25
সার্ভার সাড়া দেয়:
200 OK
Location: /user/123
ভবিষ্যতে, তারপরে আপনি ব্যবহারকারীর তথ্য পুনরুদ্ধার করতে পারেন:
GET /user/123
সার্ভার সাড়া দেয়:
200 OK
<fname>John</fname><lname>Doe</lname><age>25</age>
রেকর্ডটি পরিবর্তন করতে ( lname
এবং age
অপরিবর্তিত থাকবে):
PATCH /user/123
fname=Johnny
রেকর্ডটি আপডেট করতে (এবং ফলস্বরূপ lname
এবং age
নাল হবে):
PUT /user/123
fname=Johnny
PUT fname=Jonny
। এটি সেট করে lname
এবং age
ডিফল্ট মানগুলিতে (সম্ভবত NULL বা খালি স্ট্রিং, এবং পূর্ণসংখ্য 0) সেট করে, কারণ একটি উপস্থাপন থেকে প্রাপ্ত ডেটা সহ PUT
পুরো সংস্থানটি ওভাররাইট করে । এটি "আপডেট" দ্বারা বোঝানো হয় না, আসল আপডেট করার জন্য PATCH
পদ্ধতিটি ব্যবহার করুন কারণ এটি এমন ক্ষেত্রগুলিকে পরিবর্তন করে না যা প্রতিনিধিত্ব করে না specified
/user/1
কোনও বুদ্ধি নেই এবং সেখানে একটি তালিকা থাকা উচিত /users
। প্রতিক্রিয়া একটি হওয়া উচিত 201 Created
এবং এক্ষেত্রে ঠিক আছে না।
অনুশীলনের মধ্যে REST হল একটি দুর্দান্ত বই ।
অবশ্যই পড়তে হবে প্রতিনিধিত্বমূলক স্টেট ট্রান্সফার (REST) এবং REST এপিআই অবশ্যই হাইপারটেক্সট-চালিত হওয়া উচিত
একটি রেস্টস্টুল সার্ভিস কী তা সম্পর্কে ব্যাখ্যার জন্য মার্টিন ফোলার্স রিচার্ডসন ম্যাচিউরিটি মডেল (আরএমএম) নিবন্ধটি দেখুন ।
বিশ্রামের জন্য কোনও পরিষেবাকে হাইপারমিডিয়া পূরণ করতে হবে অ্যাপ্লিকেশন স্টেটের ইঞ্জিন হিসাবে। (হেটোয়াস) , এটি আরএমএমের 3 স্তরে পৌঁছাতে হবে, বিবরণের জন্য নিবন্ধটি পড়ুন বা কিউকন টক থেকে স্লাইডগুলি পড়ুন ।
HATEOAS সীমাবদ্ধতা হ'ল হাইপারমিডিয়া এর অ্যাপ্লিকেশন স্টেটের ইঞ্জিন হিসাবে সংক্ষিপ্ত রূপ। এই নীতিটি একটি REST এবং ক্লায়েন্ট সার্ভার সিস্টেমের বেশিরভাগ অন্যান্য ফর্মের মধ্যে মূল পার্থক্যকারী।
...
একটি RESTful অ্যাপ্লিকেশনটির ক্লায়েন্টের অ্যাক্সেসের জন্য কেবল একটি একক স্থির URL জানতে হবে। ভবিষ্যতের সমস্ত ক্রিয়াকলাপগুলি সেই URL থেকে ফিরে আসা সংস্থাগুলির উপস্থাপনার অন্তর্ভুক্ত হাইপারমিডিয়া লিঙ্কগুলি থেকে গতিশীলভাবে আবিষ্কারযোগ্য হওয়া উচিত। স্ট্যান্ডার্ডাইজড মিডিয়া প্রকারগুলি এমন কোনও ক্লায়েন্ট দ্বারা বোঝা যাবে যা একটি RESTful API ব্যবহার করতে পারে। (উইকিপিডিয়া থেকে, বিনামূল্যে এনসাইক্লোপিডিয়া)
ওয়েব ফ্রেমওয়ার্কের জন্য রিস্ট লিটমাস টেস্ট হ'ল ওয়েব ফ্রেমওয়ার্কের জন্য অনুরূপ পরিপক্কতা পরীক্ষা।
খাঁটি আরআরইএসটির কাছে পৌঁছানো: হেটোয়াসকে ভালবাসা শেখা লিঙ্কগুলির একটি ভাল সংগ্রহ।
পাবলিক ক্লাউডের জন্য REST বনাম এসওএপি আরএসটি ব্যবহারের বর্তমান স্তরের আলোচনা করে।
REST এবং সংস্করণে পরিমার্জনযোগ্যতার মাধ্যমে এক্সটেনসিবিলিটি, সংস্করণ , বিবর্তনযোগ্যতা ইত্যাদি নিয়ে আলোচনা করা হয়
রেস্ট কি?
আরআরইএসটি বলতে প্রতিনিধিত্বমূলক রাজ্য স্থানান্তর বোঝায়। (এটি কখনও কখনও "আরএসটি" বানান করা হয়)) এটি স্টেটহীন, ক্লায়েন্ট-সার্ভার, ক্যাশেযোগ্য যোগাযোগ প্রোটোকলের উপর নির্ভর করে - এবং কার্যত সমস্ত ক্ষেত্রে এইচটিটিপি প্রোটোকল ব্যবহৃত হয়।
নেটওয়ার্ক অ্যাপ্লিকেশনগুলি ডিজাইনের জন্য REST হ'ল একটি আর্কিটেকচার শৈলী। ধারণাটি হ'ল, মেশিনের মধ্যে সংযোগ স্থাপনের জন্য CORBA, RPC বা SOAP এর মতো জটিল প্রক্রিয়া ব্যবহার না করে, সাধারণ HTTP মেশিনের মধ্যে কল করতে ব্যবহৃত হয়।
বিভিন্ন উপায়ে, নিজেই এইচটিটিপি ভিত্তিক ওয়ার্ল্ড ওয়াইড ওয়েবকে একটি রেস্ট-ভিত্তিক আর্কিটেকচার হিসাবে দেখা যেতে পারে। RESTful অ্যাপ্লিকেশনগুলি ডেটা পোস্ট করতে (তৈরি এবং / অথবা আপডেট করুন), তথ্য পড়ার জন্য (যেমন, ক্যোয়ারী তৈরি করা) এবং ডেটা মুছতে HTTP অনুরোধগুলি ব্যবহার করে। সুতরাং, আরইএসটি চারটি সিআরইউডি (তৈরি / পড়ুন / আপডেট / মুছুন) ক্রিয়াকলাপের জন্য এইচটিটিপি ব্যবহার করে।
আরআরসিটি হ'ল আরপিসি (রিমোট প্রক্রিয়া কল) এবং ওয়েব সার্ভিসেস (এসওএপি, ডাব্লুএসডিএল, ইত্যাদি।) এর মতো ব্যবস্থার জন্য একটি হালকা ওজনের বিকল্প। পরে, আমরা দেখতে পাব REST কত সাধারণ।
সহজ হওয়া সত্ত্বেও, REST সম্পূর্ণরূপে বৈশিষ্ট্যযুক্ত; মূলত ওয়েব সার্ভিসে আপনি কিছুই করতে পারবেন না যা কোনও বিশ্রামের আর্কিটেকচারের সাহায্যে করা যায় না। REST কোনও "মানদণ্ড" নয়। উদাহরণস্বরূপ, আরইএসএসটির জন্য কখনই ডাব্লু 3 সি সুপারিশন থাকবে না। আরআরইএসটি প্রোগ্রামিং ফ্রেমওয়ার্ক থাকা অবস্থায়, আরইএসটি-র সাথে কাজ করা এতটাই সহজ যে আপনি প্রায়শই পার্ল, জাভা বা সি # এর মতো ভাষায় স্ট্যান্ডার্ড লাইব্রেরি বৈশিষ্ট্যগুলি সহ "আপনার নিজের রোল" করতে পারেন।
বিশ্রামের সহজ আসল অর্থ সন্ধান করার চেষ্টা করার সময় আমি খুঁজে পেয়েছি এমন একটি সেরা রেফারেন্স।
REST ডেটা ম্যানিপুলেট করতে বিভিন্ন HTTP পদ্ধতি (মূলত GET / PUT / DELETE) ব্যবহার করছে।
কোনও পদ্ধতি মুছে ফেলার জন্য নির্দিষ্ট ইউআরএল ব্যবহার করার পরিবর্তে (বলুন /user/123/delete
), আপনি ইউআরএলকে একটি মোছার অনুরোধ প্রেরণ করবেন /user/[id]
, কোনও ব্যবহারকারীকে সম্পাদনা করতে, কোনও ব্যবহারকারীর উপর তথ্য পুনরুদ্ধার করতে আপনি কোনও জিইটি অনুরোধ প্রেরণ করেছেন/user/[id]
উদাহরণস্বরূপ, পরিবর্তে ইউআরএলগুলির একটি সেট যা নিম্নলিখিতগুলির মতো দেখতে লাগবে ..
GET /delete_user.x?id=123
GET /user/delete
GET /new_user.x
GET /user/new
GET /user?id=1
GET /user/id/1
আপনি HTTP "ক্রিয়াপদ" ব্যবহার করুন এবং আছে ..
GET /user/2
DELETE /user/2
PUT /user
এটি এমন প্রোগ্রামিং করছে যেখানে আপনার সিস্টেমের আর্কিটেকচারটি রয় ফিল্ডিংয়ের থিসিসে নির্ধারিত REST স্টাইলটি ফিট করে । যেহেতু এটি স্থাপত্য শৈলী যা ওয়েব বর্ণনা করে (কম বেশি), তাই প্রচুর লোক এতে আগ্রহী।
বোনাস উত্তর: না আপনি যদি একাডেমিক বা ডিজাইনের ওয়েব পরিষেবাদি হিসাবে সফ্টওয়্যার আর্কিটেকচার অধ্যয়ন না করেন তবে শব্দটি শোনার কোনও কারণ নেই।
আমি বলব যে RESTful প্রোগ্রামিং হ'ল এমন সিস্টেম (এপিআই) তৈরি করা যা REST স্থাপত্য শৈলী অনুসরণ করে।
ডাঃ এম.এলকস্টেইনের REST সম্পর্কে টিউটোরিয়ালটি আমি এই চমত্কার, সংক্ষিপ্ত এবং সহজেই বুঝতে পেরেছি এবং বেশিরভাগ অংশে আপনার প্রশ্নের উত্তর দেবে এমন প্রয়োজনীয় অংশটি উদ্ধৃত করে:
নেটওয়ার্ক অ্যাপ্লিকেশনগুলি ডিজাইনের জন্য REST হ'ল একটি আর্কিটেকচার শৈলী । ধারণাটি হ'ল, মেশিনের মধ্যে সংযোগ স্থাপনের জন্য CORBA, RPC বা SOAP এর মতো জটিল প্রক্রিয়া ব্যবহার না করে, সাধারণ HTTP মেশিনের মধ্যে কল করতে ব্যবহৃত হয়।
- বিভিন্ন উপায়ে, নিজেই এইচটিটিপি ভিত্তিক ওয়ার্ল্ড ওয়াইড ওয়েবকে একটি রেস্ট-ভিত্তিক আর্কিটেকচার হিসাবে দেখা যেতে পারে।
RESTful অ্যাপ্লিকেশনগুলি ডেটা পোস্ট করতে (তৈরি এবং / অথবা আপডেট করুন), তথ্য পড়ার জন্য (যেমন, ক্যোয়ারী তৈরি করা) এবং ডেটা মুছতে HTTP অনুরোধগুলি ব্যবহার করে। সুতরাং, আরইএসটি চারটি সিআরইউডি (তৈরি / পড়ুন / আপডেট / মুছুন) ক্রিয়াকলাপের জন্য এইচটিটিপি ব্যবহার করে।
আমি মনে করি না স্ট্যাক ওভারফ্লোয়ের বাইরে আরআরএসটি না শুনে আপনার বোকা বোধ করা উচিত ..., আমি একই পরিস্থিতিতে থাকব! বিশ্রাম কেন এখন বড় হচ্ছে সে সম্পর্কে এই অন্য SO প্রশ্নের উত্তর কিছুটা অনুভূতি হ্রাস করতে পারে।
আমি যদি সরাসরি প্রশ্নের উত্তর না দিচ্ছি তবে আমি ক্ষমাপ্রার্থী, তবে আরও বিস্তারিত উদাহরণ দিয়ে এগুলি বোঝা আরও সহজ। সমস্ত বিমূর্ততা এবং পরিভাষার কারণে ফিল্ডিং বোঝা সহজ নয়।
এখানে মোটামুটি ভাল উদাহরণ রয়েছে:
বিশ্রাম এবং হাইপারটেক্সট ব্যাখ্যা: স্প্যাম-ই স্প্যাম ক্লিনিং রোবট
এবং আরও ভাল, এখানে সাধারণ উদাহরণ সহ একটি পরিষ্কার ব্যাখ্যা রয়েছে (পাওয়ারপয়েন্টটি আরও বিস্তৃত, তবে আপনি এর বেশিরভাগ এইচটিএমএল সংস্করণে পেতে পারেন):
http://www.xfront.com/REST.ppt বা http://www.xfront.com/REST.html
উদাহরণগুলি পড়ার পরে আমি দেখতে পেলাম কেন কেন বলছে যে REST হাইপারটেক্সট চালিত। আমি যদিও নিশ্চিত যে তিনি ঠিকই ছিলেন না, কারণ সেই / ব্যবহারকারী / 123 হ'ল একটি ইউআরআই যা কোনও উত্সকে দেখায় এবং এটি আমার কাছে স্পষ্ট নয় যে ক্লায়েন্ট সম্পর্কে "আউট-ব্যান্ড" সম্পর্কে জানেন কেবল কারণ এটি অস্থির ful
এই এক্সফ্রন্ট ডকুমেন্টটি রেস্ট এবং এসওএপি মধ্যে পার্থক্য ব্যাখ্যা করে এবং এটি সত্যই সহায়ক। ফিল্ডিং যখন বলে, " এটি আরপিসি It এটি আরপিসির চিৎকার করে " ", এটি স্পষ্ট যে RPC বিশ্রামপ্রবণ নয়, সুতরাং এর সঠিক কারণগুলি দেখতে এটি দরকারী। (এসওএপি হ'ল এক ধরণের আরপিসি))
রেস্ট কি?
সরকারী কথায় REST, REST হ'ল বর্তমান "ওয়েব" ফান্ডামেন্টালগুলি ব্যবহার করে নির্দিষ্ট নীতিগুলিতে নির্মিত একটি স্থাপত্য শৈলী। ওয়েবে 5 টি বেসিক ফান্ডামেন্টাল রয়েছে যা আরআরএসটি পরিষেবাগুলি তৈরি করার জন্য লিভারেজ করা হয়।
Communication is Done by Representation
মানে?
আমি উত্তরগুলির একগুচ্ছ দেখতে পাচ্ছি যা বলছে যে ব্যবহারকারী 123 সম্পর্কে "রিসোর্স" / ব্যবহারকারীর / 123 "এ থাকা সমস্ত কিছু বিশ্রামযোগ্য।
এই শব্দটি রচনা করেছেন রয় ফিল্ডিং, বলেছেন যে REST এপিআইগুলি অবশ্যই হাইপারটেক্সট চালিত । বিশেষত, "একটি আরএসটি এপিআই অবশ্যই নির্দিষ্ট সংস্থার নাম বা শ্রেণিবদ্ধকরণ সংজ্ঞায়িত করবে না"।
সুতরাং যদি আপনার "/ ব্যবহারকারীর / 123" পথটি ক্লায়েন্টটিতে হার্ডকোড করা থাকে তবে এটি সত্যই আরামদায়ক নয়। এইচটিটিপি-র একটি ভাল ব্যবহার, সম্ভবত, সম্ভবত না। তবে বিশ্রামের নয়। এটি হাইপারটেক্সট থেকে আসতে হবে।
উত্তরটি খুব সহজ, রয় ফিল্ডিংয়ের লেখা একটি গবেষণামূলক প্রবন্ধ রয়েছে।] 1 এই গবেষণায় তিনি বিশ্রামের নীতিগুলি সংজ্ঞায়িত করেন। যদি কোনও অ্যাপ্লিকেশন সেই সমস্ত নীতি পূরণ করে, তবে এটি একটি বিশ্রামের আবেদন।
RESTful শব্দটি তৈরি করা হয়েছিল কারণ পিপিএল তাদের RE-REST অ্যাপ্লিকেশনটিকে REST হিসাবে ডেকে REST শব্দটি ফুরিয়েছে। এরপরে RESTful শব্দটিও শেষ হয়ে গেল। আজকাল আমরা ওয়েব এপিআই এবং হাইপারমিডিয়া এপিআই সম্পর্কে কথা বলছি কারণ বেশিরভাগ তথাকথিত আরআরইএসটি অ্যাপ্লিকেশনগুলি ইউনিফর্ম ইন্টারফেসের সীমাবদ্ধতার HATEOAS অংশটি পূরণ করে নি।
বিশ্রামের সীমাবদ্ধতাগুলি নিম্নলিখিত:
ক্লায়েন্ট-সার্ভার আর্কিটেকচার
সুতরাং এটি উদাহরণস্বরূপ পিইউবি / এসইউবি সকেটগুলির সাথে কাজ করে না, এটি আরইকিউ / আরইপি ভিত্তিক।
রাষ্ট্রহীন যোগাযোগ
সুতরাং সার্ভার ক্লায়েন্টদের রাজ্য বজায় রাখে না। এর অর্থ হ'ল আপনি সাইড সেশন স্টোরেজটি সার্ভার ব্যবহার করতে পারবেন না এবং আপনাকে প্রতিটি অনুরোধ প্রমাণ করতে হবে। আপনার ক্লায়েন্টরা সম্ভবত কোনও এনক্রিপ্ট হওয়া সংযোগের মাধ্যমে বুনিয়াদি লেখক শিরোনাম প্রেরণ করবে। (বড় অ্যাপ্লিকেশন দ্বারা এটি অনেক সেশন বজায় রাখা কঠিন।)
আপনি যদি পারেন ক্যাশে ব্যবহার
সুতরাং আপনাকে বার বার একই অনুরোধগুলি সরবরাহ করতে হবে না।
ক্লায়েন্ট এবং সার্ভারের মধ্যে সাধারণ চুক্তি হিসাবে অভিন্ন ইন্টারফেস
ক্লায়েন্ট এবং সার্ভারের মধ্যে চুক্তিটি সার্ভার দ্বারা পরিচালিত হয় না। অন্য কথায় ক্লায়েন্টকে অবশ্যই পরিষেবাটি বাস্তবায়ন থেকে ডিক্লোলড করতে হবে। আপনি সংস্থাগুলি সনাক্তকরণের জন্য আইআরআই (ইউআরআই) মানক, বার্তাগুলি বিনিময় করার জন্য এইচটিটিপি স্ট্যান্ডার্ড, বডি সিরিয়ালাইজেশন ফর্ম্যাট বর্ণনা করার জন্য স্ট্যান্ডার্ড এমআইএমআই টাইপ, মেটাডেটা (সম্ভবত আরডিএফ ভোকাব, মাইক্রোফর্ম্যাটস ইত্যাদি) ব্যবহার করে আপনি এই অবস্থায় পৌঁছতে পারেন solutions বার্তাটির শরীরে বিভিন্ন অংশের শব্দার্থবিজ্ঞানের বর্ণনা দিন। ক্লায়েন্টের কাছ থেকে আইআরআই কাঠামোটি ডিকুয়াল করতে আপনাকে হাইপারমিডিয়া ফর্ম্যাটগুলিতে (এইচটিএমএল, জেএসএন-এলডি, এইচএল, ইত্যাদি) ক্লায়েন্টদের হাইপারলিঙ্কগুলি প্রেরণ করতে হবে। সুতরাং কোনও ক্লায়েন্ট তার বর্তমান লক্ষ্য অর্জনের জন্য যথাযথ রাষ্ট্রীয় রূপান্তরের মাধ্যমে অ্যাপ্লিকেশনটির স্টেট মেশিনটি নেভিগেট করার জন্য হাইপারলিংকের কাছে নিযুক্ত মেটাডাটা (সম্ভবত সম্পর্কগুলির সংযোগ, আরডিএফ ভোকাবস) ব্যবহার করতে পারে।
উদাহরণস্বরূপ যখন কোনও ক্লায়েন্ট কোনও ওয়েবশপে একটি অর্ডার প্রেরণ করতে চায় তখন ওয়েবশপ দ্বারা প্রেরিত প্রতিক্রিয়াগুলিতে হাইপারলিংকগুলি পরীক্ষা করতে হবে। লিঙ্কগুলি পরীক্ষা করে এটি http://schema.org/OrderAction এর সাথে বর্ণিত একটির সন্ধান করে । ক্লায়েন্টটি স্কিমা.অর্গ.ওয়েকাবল জানেন, সুতরাং এটি বুঝতে পারে যে এই হাইপারলিংকটি সক্রিয় করে এটি আদেশটি প্রেরণ করবে। সুতরাং এটি হাইপারলিঙ্কটি সক্রিয় করে এবং POST https://example.com/api/v1/order
সঠিক শরীরের সাথে একটি বার্তা প্রেরণ করে । এর পরে পরিষেবা বার্তাটি প্রসেস করে এবং যথাযথ HTTP স্থিতির শিরোনামযুক্ত ফলাফলটির সাথে সাড়া দেয়, উদাহরণস্বরূপ 201 - created
সাফল্যের দ্বারা by আরডিএফ ফর্ম্যাটটি ব্যবহারের জন্য স্ট্যান্ডার্ড সমাধানের সাথে বিশদ মেটাডাটা সহ বার্তাগুলি টীকাতে উদাহরণস্বরূপ, জেএসএন -এলডি একটি আরএসটি ভোকাব সহ , উদাহরণস্বরূপ হাইড্রা এবং ডোমেনের নির্দিষ্ট ভোকাব যেমনস্কিমা.আর.অর্গ বা অন্য কোনও লিঙ্কযুক্ত ডেটা ভোকাব এবং যদি প্রয়োজন হয় তবে কাস্টম অ্যাপ্লিকেশন নির্দিষ্ট ভোকাব। এখন এটি সহজ নয়, এ কারণেই বেশিরভাগ পিপিএল এইচএল এবং অন্যান্য সাধারণ ফর্ম্যাটগুলি ব্যবহার করে যা সাধারণত কেবলমাত্র একটি আরএসটি ভোকাব সরবরাহ করে তবে কোনও লিঙ্কযুক্ত ডেটা সমর্থন করে না।
স্কেলিবিলিটি বাড়াতে একটি স্তরযুক্ত সিস্টেম তৈরি করুন
আরআরইএসটি সিস্টেম হায়ারারিকিকাল স্তরগুলির সমন্বয়ে গঠিত। প্রতিটি স্তরের এমন উপাদান রয়েছে যা উপাদানগুলির পরিষেবাদি ব্যবহার করে যা নীচের পরবর্তী স্তরটিতে রয়েছে। সুতরাং আপনি অনায়াসে নতুন স্তর এবং উপাদান যুক্ত করতে পারেন।
উদাহরণস্বরূপ একটি ক্লায়েন্ট স্তর রয়েছে যার মধ্যে ক্লায়েন্ট রয়েছে এবং এর নীচে একটি পরিষেবা স্তর রয়েছে যা একটি একক পরিষেবা রয়েছে contains এখন আপনি তাদের মধ্যে ক্লায়েন্টের পাশের ক্যাশে যুক্ত করতে পারেন। এর পরে আপনি অন্য পরিষেবা উদাহরণ এবং একটি ভার ভারসাম্য যোগ করতে পারেন, এবং আরও ... ক্লায়েন্ট কোড এবং পরিষেবা কোড পরিবর্তন হবে না।
ক্লায়েন্টের কার্যকারিতা বাড়ানোর দাবিতে কোড
এই সীমাবদ্ধতা isচ্ছিক। উদাহরণস্বরূপ আপনি ক্লায়েন্টকে নির্দিষ্ট মিডিয়া টাইপের জন্য একটি পার্সার প্রেরণ করতে পারেন, এবং আরও কিছু ... এটি করার জন্য আপনার ক্লায়েন্টে একটি স্ট্যান্ডার্ড প্লাগইন লোডার সিস্টেমের প্রয়োজন হতে পারে, বা আপনার ক্লায়েন্ট প্লাগইন লোডার সমাধানের সাথে মিলিত হবে ।
REST সীমাবদ্ধতাগুলির ফলে উচ্চতর স্কেলযোগ্য সিস্টেম হয় যেখানে ক্লায়েন্টগুলি পরিষেবাগুলি বাস্তবায়ন থেকে বিরত থাকে। সুতরাং ক্লায়েন্টগুলি ওয়েবে ব্রাউজারগুলির মতো পুনরায় ব্যবহারযোগ্য, সাধারণ হতে পারে। ক্লায়েন্ট এবং পরিষেবাগুলি একই স্ট্যান্ডার্ড এবং ভোকাবগুলি ভাগ করে, যাতে ক্লায়েন্ট সেবার প্রয়োগের বিশদটি জানে না সত্ত্বেও তারা একে অপরকে বুঝতে পারে। এটি স্বয়ংক্রিয় ক্লায়েন্ট তৈরি করা সম্ভব করে যা তাদের লক্ষ্য অর্জনের জন্য আরআরএসটি পরিষেবাগুলি খুঁজে পেতে এবং ব্যবহার করতে পারে। দীর্ঘমেয়াদে এই ক্লায়েন্টরা একে অপরের সাথে যোগাযোগ করতে পারে এবং কার্যের মাধ্যমে একে অপরকে বিশ্বাস করতে পারে, যেমন মানুষের মতো। যদি আমরা এই জাতীয় ক্লায়েন্টগুলিতে শেখার নিদর্শনগুলি যুক্ত করি, তবে ফলাফলটি একক সার্ভার পার্কের পরিবর্তে মেশিনগুলির ওয়েব ব্যবহার করে এক বা একাধিক এআই হবে। তাই শেষে বার্নার্স লি এর স্বপ্ন: শব্দার্থক ওয়েব এবং কৃত্রিম বুদ্ধি বাস্তবতা হবে। সুতরাং 2030 সালে আমরা স্কাইনেট দ্বারা সমাপ্ত। তখন পর্যন্ত ... ;-)
RESTful (প্রতিনিধিত্বমূলক রাষ্ট্র স্থানান্তর) এপিআই প্রোগ্রামিং 5 বেসিক সফ্টওয়্যার আর্কিটেকচারাল স্টাইলের নীতি অনুসরণ করে যে কোনও প্রোগ্রামিং ভাষায় ওয়েব অ্যাপ্লিকেশন লিখছে :
অন্য কথায় আপনি HTTP- র উপরে সরল পয়েন্ট-টু-পয়েন্ট নেটওয়ার্ক অ্যাপ্লিকেশন লিখছেন যা GET, POST, PUT বা DELETE এর মতো ক্রিয়াগুলি ব্যবহার করে RESTful আর্কিটেকচার প্রয়োগ করে যা প্রতিটি "সংস্থান" প্রকাশ করে ইন্টারফেসের মানককরণের প্রস্তাব দেয়। এটি সহজ এবং কার্যকর উপায়ে (অত্যন্ত সফল, প্রমাণিত এবং বিতরণকৃত আর্কিটেকচার) ওয়েবে বর্তমান বৈশিষ্ট্যগুলি ব্যবহার করা কিছুই নয়। এটি আরও জটিল পদ্ধতির যেমন এসওএপি , করবা এবং আরপিসির বিকল্প ।
RESTful প্রোগ্রামিং ওয়েব আর্কিটেকচার ডিজাইনের সাথে সামঞ্জস্য করে এবং যদি সঠিকভাবে প্রয়োগ করা হয় তবে এটি আপনাকে স্কেলযোগ্য ওয়েব অবকাঠামোর পুরো সুবিধা নিতে দেয়।
যদি আমাকে আরইএসটি-র মূল গবেষণামূলক প্রবণতাটি মাত্র 3 টি ছোট বাক্যে কমাতে হয়, আমি মনে করি নিম্নলিখিতটি তার মূলত ধারণ করেছে:
এর পরে, অভিযোজন, কোডিং কনভেনশন এবং সেরা অনুশীলনগুলি সম্পর্কে বিতর্কগুলির মধ্যে পড়ে।
মজার বিষয় হল, গবেষণামূলক প্রবন্ধে এইচটিটিপি পোস্ট, জিইটি, ডিলেট বা পুট অপারেশনের কোনও উল্লেখ নেই। এটি অবশ্যই "ইউনিফর্ম ইন্টারফেস" এর জন্য "সেরা অনুশীলন" এর কারওর পরে ব্যাখ্যা হতে হবে।
ওয়েব পরিষেবায় যখন এটি আসে তখন মনে হয় আমাদের ডাব্লুএসডিএল এবং এসওএপি ভিত্তিক আর্কিটেকচারের পার্থক্য করার কিছু উপায় প্রয়োজন যা ইন্টারফেসে যথেষ্ট পরিমাণে ওভারহেড এবং যুক্তিযুক্তভাবে অনেক অপ্রয়োজনীয় জটিলতা যুক্ত করে। বাস্তবায়নের জন্য তাদের অতিরিক্ত ফ্রেমওয়ার্ক এবং বিকাশকারী সরঞ্জামও প্রয়োজন। আমি নিশ্চিত না যে ডাব্লুএসডিএল এবং এসওএপি-এর মতো সাধারণ জ্ঞানের ইন্টারফেস এবং অতি মাত্রায় ইঞ্জিনিয়ারড ইন্টারফেসের মধ্যে পার্থক্য করার জন্য REST হ'ল সেরা শব্দ best তবে আমাদের কিছু দরকার।
আরআরইএসটি হ'ল একটি আর্কিটেকচারাল রীতি এবং বিতরণ অ্যাপ্লিকেশনগুলির লেখার স্টাইল। এটি সংকীর্ণ অর্থে কোনও প্রোগ্রামিং শৈলী নয়।
আপনি আরআরএসটি স্টাইলটি ব্যবহার করা বলার অনুরূপ যে আপনি একটি নির্দিষ্ট স্টাইলে একটি বাড়ি তৈরি করেছেন: উদাহরণস্বরূপ টিউডার বা ভিক্টোরিয়ান। একটি সফ্টওয়্যার শৈলী হিসাবে আরএসইএস এবং হোম স্টাইল হিসাবে টিউডার বা ভিক্টোরিয়ান উভয়ই তাদের তৈরি গুণাবলী এবং সীমাবদ্ধতা দ্বারা সংজ্ঞায়িত করা যেতে পারে। উদাহরণস্বরূপ, REST- এ ক্লায়েন্ট সার্ভারের বিভাজন থাকতে হবে যেখানে বার্তাগুলি স্ব-বর্ননাযুক্ত। টিউডোর স্টাইলের বাড়ির ওভারল্যাপিং গেবিল এবং ছাদগুলি রয়েছে যা সম্মুখ মুখের পেরেকগুলির সাথে খাড়াভাবে তৈরি হয়। রিস্টের প্রতিবন্ধকতা এবং গুণাবলী সম্পর্কে আরও জানতে আপনি রয়ের গবেষণামূলক প্রবন্ধটি পড়তে পারেন।
নিয়মিত এবং ব্যবহারিকভাবে প্রয়োগ করার জন্য হোম স্টাইলের বিপরীতে REST এর পক্ষে শক্ত সময় ছিল। এটি ইচ্ছাকৃত হতে পারে। এর বাস্তব বাস্তবায়ন ডিজাইনারের উপর ছেড়ে দেওয়া। তাই আপনি যতক্ষণ চান আপনি তাই করতে দ্বিধাদ্বন্দ্বী হোন যতক্ষণ আপনি আরআরএসটি সিস্টেম তৈরির প্রবন্ধে নির্ধারিত প্রতিবন্ধকতাগুলি পূরণ করেন।
বোনাস:
পুরো ওয়েবটি আরইএসটি (বা ওয়েস্টের উপর ভিত্তি করেই রিস্ট ছিল) এর উপর ভিত্তি করে। সুতরাং ওয়েব বিকাশকারী হিসাবে আপনি এটি সম্পর্কে সচেতন হতে পারেন যদিও ভাল ওয়েব অ্যাপ্লিকেশন লেখার প্রয়োজন নেই।
এখানে আমার REST এর বেসিক রূপরেখা দেওয়া আছে। আমি একটি বিশিষ্ট আর্কিটেকচারের প্রতিটি উপাদানগুলির পিছনের চিন্তাভাবনাটি প্রদর্শনের চেষ্টা করেছি যাতে ধারণাটি বুঝতে আরও স্বজ্ঞাত হয়। আশা করি এটি কিছু লোকের জন্য বিশ্রামে বিশ্রামে সহায়তা করবে!
আরইএসটি (প্রতিনিধিত্বমূলক রাজ্য স্থানান্তর) একটি ডিজাইন আর্কিটেকচার যা নেটওয়ার্ক নেটওয়ার্কগুলি কীভাবে সম্পদগুলি (যেমন নোডগুলি তথ্য ভাগ করে নেবে) ডিজাইন এবং সম্বোধন করে তা রূপরেখা দেয়। সাধারণভাবে, একটি আরএসএফুল আর্কিটেকচার এটি তৈরি করে যাতে ক্লায়েন্ট (অনুরোধকারী মেশিন) এবং সার্ভার (প্রতিক্রিয়াশীল মেশিন) সার্ভারটি কীভাবে চালিত হয় এবং সার্ভার কীভাবে পাস করতে পারে তা জানতে ক্লায়েন্টকে ছাড়াই ডেটা পড়তে, লিখতে এবং আপডেট করার জন্য অনুরোধ করতে পারে ক্লায়েন্ট সম্পর্কে কিছু জানার প্রয়োজন ছাড়াই এটি ফিরে আসে। ঠিক আছে, দুর্দান্ত ... তবে আমরা বাস্তবে এটি কীভাবে করব?
সর্বাধিক সুস্পষ্ট প্রয়োজন হ'ল কোনও ধরণের সার্বজনীন ভাষা হওয়া দরকার যাতে সার্ভার ক্লায়েন্টকে অনুরোধটি দিয়ে কী করার চেষ্টা করছে এবং সার্ভারের প্রতিক্রিয়া জানাতে পারে tell
তবে প্রদত্ত যে কোনও সংস্থান খুঁজে পেতে এবং তারপরে ক্লায়েন্টকে সেই সংস্থানটি কোথায় থাকে তা জানানোর জন্য, সেখানে সংস্থানগুলি দেখানোর একটি সর্বজনীন উপায় হওয়া দরকার be ইউনিভার্সাল রিসোর্স আইডেন্টিফায়ার (ইউআরআই) এখানে আসে; এগুলি সংস্থানগুলি খুঁজে পেতে মূলত অনন্য ঠিকানা।
তবে আরইএসএসটির আর্কিটেকচার এখানে শেষ হয় না! উপরেরটি আমরা যা চাই তার প্রাথমিক চাহিদা পূরণ করে, আমরা এমন একটি আর্কিটেকচারও চাই যা উচ্চ ভলিউম ট্র্যাফিককে সমর্থন করে যেহেতু প্রদত্ত যে কোনও সার্ভার সাধারণত বেশ কয়েকটি ক্লায়েন্টের প্রতিক্রিয়াগুলি পরিচালনা করে। সুতরাং, আমরা পূর্বের অনুরোধগুলির তথ্য স্মরণ করে সার্ভারটিকে অভিভূত করতে চাই না।
অতএব, আমরা ক্লায়েন্ট এবং সার্ভারের মধ্যে প্রতিটি অনুরোধ-প্রতিক্রিয়া জুটি স্বতন্ত্র, এমন একটি বিধিনিষেধ আরোপ করি যার অর্থ সার্ভারকে কোনও নতুন প্রতিক্রিয়া জানাতে পূর্ববর্তী অনুরোধগুলি (ক্লায়েন্ট-সার্ভার ইন্টারঅ্যাকশনটির পূর্ববর্তী রাজ্যগুলি) সম্পর্কে কিছুই মনে রাখতে হবে না that অনুরোধ। এর অর্থ হল যে আমরা চাই আমাদের মিথস্ক্রিয়া রাষ্ট্রহীন হোক।
পূর্বেই প্রদত্ত ক্লায়েন্টের জন্য করা কম্পিউটারগুলি পুনরায় করা থেকে আমাদের সার্ভারের স্ট্রেনকে আরও সহজ করার জন্য, আরইএসটি এছাড়াও ক্যাশিংয়ের অনুমতি দেয়। মূলত, ক্যাশে মানে ক্লায়েন্টকে সরবরাহ করা প্রাথমিক প্রতিক্রিয়ার একটি স্ন্যাপশট নেওয়া। ক্লায়েন্ট যদি আবার একই অনুরোধ করে তবে সার্ভার ক্লায়েন্টকে প্রাথমিক প্রতিক্রিয়া তৈরি করার জন্য প্রয়োজনীয় সমস্ত কম্পিউটেশনগুলি পূণরায় না করে স্ন্যাপশট সরবরাহ করতে পারে। তবে এটি যেহেতু স্ন্যাপশট তাই স্ন্যাপশটটির মেয়াদ শেষ না হলে - সার্ভারটি আগে থেকে একটি মেয়াদোত্তীর্ণ সময় সেট করে - এবং প্রাথমিক ক্যাশে থেকে প্রতিক্রিয়া আপডেট করা হয়েছে (যেমন অনুরোধটি ক্যাশেড প্রতিক্রিয়ার চেয়ে আলাদা উত্তর দেবে) , ক্যাশেটির মেয়াদ শেষ না হওয়া অবধি ক্লায়েন্ট আপডেটগুলি দেখতে পাবে না (বা ক্যাশে সাফ হয়ে যায়) এবং প্রতিক্রিয়াটি আবার স্ক্র্যাচ থেকে রেন্ডার করা হবে।
আপনি প্রায়শই রেস্টস্টুল আর্কিটেকচার সম্পর্কে এখানে সর্বশেষ জিনিস হ'ল তারা স্তরযুক্ত। ক্লায়েন্ট এবং সার্ভারের মধ্যে মিথস্ক্রিয়া সম্পর্কে আমাদের আলোচনায় আমরা ইতিমধ্যে স্পষ্টভাবে এই প্রয়োজনীয়তাটি নিয়ে আলোচনা করছি। মূলত, এর অর্থ এই যে আমাদের সিস্টেমে প্রতিটি স্তর কেবল সংলগ্ন স্তরগুলির সাথে ইন্টারঅ্যাক্ট করে। সুতরাং আমাদের আলোচনায়, ক্লায়েন্ট স্তরটি আমাদের সার্ভার স্তরটির সাথে ইন্টারঅ্যাক্ট করে (এবং বিপরীতে), তবে এমন অন্যান্য সার্ভার স্তর থাকতে পারে যা প্রাথমিক সার্ভারকে অনুরোধ প্রক্রিয়ায় সহায়তা করে যা ক্লায়েন্ট সরাসরি যোগাযোগ না করে। বরং সার্ভারটি প্রয়োজনীয়ভাবে অনুরোধটি পাস করে।
এখন, যদি এই সমস্ত কিছু পরিচিত মনে হয়, তবে দুর্দান্ত। হাইপারটেক্সট ট্রান্সফার প্রোটোকল (এইচটিটিপি), যা ওয়ার্ল্ড ওয়াইড ওয়েবের মাধ্যমে যোগাযোগ প্রোটোকলকে সংজ্ঞায়িত করে তা হল RESTful আর্কিটেকচারের বিমূর্ত ধারণা (বা আপনি যদি আমার মতো ওওপি ধর্মান্ধ হন তবে REST শ্রেণীর উদাহরণ) an আরআরটি-র এই প্রয়োগে ক্লায়েন্ট এবং সার্ভার জিইটি, পোস্ট, পুট, ডিলেট, ইত্যাদি ইত্যাদির মাধ্যমে ইন্টারঅ্যাক্ট করে, যা সর্বজনীন ভাষার অংশ এবং সংস্থানগুলি ইউআরএলগুলি ব্যবহারের দিকে নির্দেশ করতে পারে।
আমি মনে করি যে বিশ্রামের বিষয়টি হ'ল রাষ্ট্রবিহীন পরিবহণ স্তর হিসাবে ইন্টারনেট (প্রোটোকল) ব্যবহার করার সময় রাষ্ট্রীয়তার উচ্চতর স্তরে আলাদা হওয়া । বেশিরভাগ অন্যান্য পদ্ধতির মধ্যে জিনিসগুলি মিশ্রিত হয়।
ইন্টারনেট যুগে প্রোগ্রামিংয়ের মৌলিক পরিবর্তনগুলি পরিচালনা করার জন্য এটি সর্বোত্তম ব্যবহারিক পদ্ধতি ছিল। মৌলিক পরিবর্তনগুলি সম্পর্কে, এরিক মেইজারের এখানে শোতে একটি আলোচনা রয়েছে: http://www.infoq.com/interviews/erik-meijer-programming-language-design-effects-purity#view_93197 । তিনি এটিকে পাঁচটি প্রভাব হিসাবে সংক্ষিপ্ত বিবরণ দিয়েছেন এবং একটি প্রোগ্রামিং ভাষায় সমাধানটি ডিজাইন করে একটি সমাধান উপস্থাপন করেন। সমাধানটি, ভাষা নির্বিশেষে প্ল্যাটফর্ম বা সিস্টেম পর্যায়ে অর্জন করা যেতে পারে। বিশ্রামগ্রহকে এমন একটি সমাধান হিসাবে দেখা যেতে পারে যা বর্তমান অনুশীলনে খুব সফল হয়েছে।
প্রশান্ত শৈলীর সাহায্যে আপনি কোনও অবিশ্বাস্য ইন্টারনেট জুড়ে অ্যাপ্লিকেশনের স্থিতিটি নিয়ে যান এবং পরিচালনা করেন। যদি এটি সঠিক এবং বর্তমান অবস্থা পেতে বর্তমান অপারেশনটিকে ব্যর্থ করে, অ্যাপ্লিকেশনটি চালিয়ে যেতে সহায়তা করার জন্য এটি শূন্য-বৈধকরণের অধ্যক্ষের প্রয়োজন। যদি এটি রাজ্যে কারসাজি করতে ব্যর্থ হয় তবে এটি জিনিসগুলি ঠিক রাখতে সাধারণত একাধিক পর্যায়ের নিশ্চিতকরণ ব্যবহার করে। এই অর্থে, বিশ্রাম নিজেই একটি সম্পূর্ণ সমাধান নয়, এর কার্যকারিতা সমর্থন করার জন্য এটি ওয়েব অ্যাপ্লিকেশন স্ট্যাকের অন্য অংশের ফাংশনগুলির প্রয়োজন।
এই দৃষ্টিকোণটি দেওয়া, বাকি স্টাইলটি সত্যই ইন্টারনেট বা ওয়েব অ্যাপ্লিকেশনটির সাথে আবদ্ধ নয়। এটি প্রোগ্রামিং পরিস্থিতিতে অনেকের একটি মৌলিক সমাধান। এটি খুব সহজ নয়, এটি কেবল ইন্টারফেসটিকে সত্যই সহজ করে তোলে এবং অন্যান্য প্রযুক্তিগুলির সাথে আশ্চর্যজনকভাবে কপি করে।
শুধু আমার 2 সি।
সম্পাদনা করুন: আরও দুটি গুরুত্বপূর্ণ দিক:
রাষ্ট্রহীনতা বিভ্রান্তিকর। এটি অ্যাপ্লিকেশন বা সিস্টেম নয়, বিশ্রামের এপিআই সম্পর্কে। সিস্টেমটি রাষ্ট্রীয় হওয়া দরকার। স্টেটলেস এপিআই-র উপর ভিত্তি করে একটি স্থিতিশীল সিস্টেম ডিজাইন করার বিষয়ে বিশিষ্ট ডিজাইন। অন্য কিউএর কিছু উদ্ধৃতি :
আদর্শশক্তি : REST এর একটি প্রায়শই অবহেলিত অংশ হ'ল বেশিরভাগ ক্রিয়াগুলির আদর্শশক্তি । এটি মজবুত ব্যবস্থা এবং শব্দার্থবিজ্ঞানের সঠিক ব্যাখ্যার কম পারস্পরিক নির্ভরশীলতার দিকে পরিচালিত করে ।
এটি আশ্চর্যজনকভাবে দীর্ঘ "আলোচনা" এবং তবুও কমপক্ষে বলতে বেশ বিভ্রান্তিকর।
আইএমও:
1) বিশ্রামমূলক প্রোগ্রামিংয়ের মতো কোনও জিনিস নেই, একটি বড় জয়েন্ট এবং প্রচুর বিয়ার ছাড়াই :)
২) প্রতিনিধিত্বমূলক রাজ্য স্থানান্তর (আরইএসটি) হল রয় ফিল্ডিংয়ের গবেষণামূলক প্রবন্ধে নির্দিষ্ট একটি স্থাপত্য শৈলী । এটিতে অনেকগুলি বাধা রয়েছে। আপনার পরিষেবা / ক্লায়েন্ট যদি তাদের সম্মান করে তবে তা বিশ্রামের। এই হল.
আপনি বাধাগুলি সংক্ষিপ্ত করতে (উল্লেখযোগ্যভাবে) করতে পারেন:
আরও একটি খুব ভাল পোস্ট রয়েছে যা জিনিসগুলি সুন্দরভাবে ব্যাখ্যা করে।
প্রচুর উত্তরগুলি বৈধ তথ্যের সাথে এটি মিশ্রিত করে এবং কিছু বিভ্রান্তি যুক্ত করে অনুলিপি করেছে / আটকিয়েছে। লোকেরা এখানে স্তরের বিষয়ে কথা বলে, আরইএসটিফুল ইউআরআই সম্পর্কে (এমন কোনও জিনিস নেই!), এইচটিটিপি পদ্ধতি প্রয়োগ করুন, পোষ্ট করুন, পুট করুন ... REST কেবল এটি সম্পর্কে নয় বা এটি নয়।
উদাহরণস্বরূপ লিঙ্কগুলি - সুন্দর চেহারাযুক্ত এপিআই থাকা ভাল তবে শেষ পর্যন্ত ক্লায়েন্ট / সার্ভারটি আপনাকে যে লিঙ্কগুলি পাবে / প্রেরণ করবে সেগুলি সত্যই যত্নশীল নয় এটি হ'ল বিষয়বস্তু।
শেষ পর্যন্ত কোনও RESTful ক্লায়েন্টকে যতক্ষণ না সামগ্রীর ফর্ম্যাটটি জানা যায় ততক্ষণ কোনও RESTful পরিষেবায় গ্রাস করতে সক্ষম হওয়া উচিত।
পুরানো প্রশ্ন, উত্তর দেওয়ার নতুন পদ্ধতি। এই ধারণাটি সম্পর্কে সেখানে প্রচুর ভুল ধারণা রয়েছে। আমি সবসময় মনে রাখার চেষ্টা করি:
আমি হিসাবে বিশ্রাম প্রোগ্রামিং সংজ্ঞা
কোনও অ্যাপ্লিকেশন যদি মিডিয়া প্রকারে ক্লায়েন্ট বুঝতে পারে তবে এটি সংস্থাগুলি (ডেটা + রাষ্ট্রীয় রূপান্তর নিয়ন্ত্রণের সংমিশ্রণ) সরবরাহ করে যদি তা প্রশান্ত থাকে
বিশ্রামের প্রোগ্রামার হওয়ার জন্য আপনাকে অবশ্যই এমন অ্যাপ্লিকেশন তৈরি করার চেষ্টা করতে হবে যা অভিনেতাদের জিনিস করতে দেয়। শুধু ডাটাবেস প্রকাশ করা নয়।
রাষ্ট্রের ট্রানজিশন নিয়ন্ত্রণগুলি কেবল তখনই অর্থবোধ করে যখন ক্লায়েন্ট এবং সার্ভার সংস্থানগুলির মিডিয়া টাইপের উপস্থাপনার বিষয়ে একমত হয়। অন্যথায় একটি নিয়ন্ত্রণ কী এবং কী কী নয় এবং কীভাবে নিয়ন্ত্রণ চালানো যায় তা জানার উপায় নেই। IE যদি ব্রাউজারগুলি <form>
এইচটিএমএলে ট্যাগগুলি না জানত তবে আপনার ব্রাউজারে রূপান্তর অবস্থায় জমা দেওয়ার জন্য আপনার পক্ষে কিছুই থাকবে না।
আমি স্ব প্রচারের দিকে লক্ষ্য রাখছি না, তবে আমি এই আলোচনাগুলিতে আমার আলাপের গভীর গভীরতায় প্রসারিত করছি http://techblog.bodybuilding.com/2016/01/video- কি- is- restful- 200.html ।
আমার আলাপের একটি অংশটি প্রায়শই রিচার্ডসন পরিপক্কতার মডেল সম্পর্কে উল্লেখ করা হয়, আমি স্তরগুলিতে বিশ্বাস করি না, আপনি হয় বিশ্রামপ্রাপ্ত (স্তর 3) অথবা আপনি নন, তবে আমি কী সম্পর্কে এটি বলতে চাই প্রতিটি স্তর এটিই বিশ্রামের পথে আপনার জন্য করে
একটি - বিশ্রাম 6 স্থাপত্য সীমাবদ্ধতার যা কোন ওয়েব সেবা করতে সংজ্ঞায়িত সত্য RESTful API ।
REST === এইচটিটিপি সাদৃশ্যটি সঠিক নয় যতক্ষণ না আপনি এই বিষয়টিকে চাপ দিতে হবে না যে এটি " হেস্টোএএস " চালিত হওয়া উচিত।
রায় নিজেই এখানে এটি পরিষ্কার করেছেন ।
আরআরএসআইপি প্রাথমিক ইউআরআই (বুকমার্ক) এর বাইরে কোনও পূর্ব জ্ঞান ছাড়াই প্রবেশ করাতে হবে এবং মানকৃত মিডিয়া টাইপের সেট সেট করতে হবে যা উদ্দেশ্যে দর্শকদের জন্য উপযুক্ত (যেমন, কোনও ক্লায়েন্টের দ্বারা বোঝা যাবে যা এপিআই ব্যবহার করতে পারে)। সেদিক থেকে সমস্ত অ্যাপ্লিকেশন রাষ্ট্রের রূপান্তরগুলি অবশ্যই প্রাপ্ত উপস্থাপনাগুলিতে উপস্থিত থাকা বা সেই উপস্থাপনাগুলির ব্যবহারকারীর হেরফের দ্বারা বোঝানো সার্ভার-সরবরাহিত পছন্দগুলির ক্লায়েন্ট নির্বাচনের দ্বারা চালিত হতে হবে। স্থানান্তরগুলি মিডিয়া ধরণ এবং সংস্থান যোগাযোগ ব্যবস্থার ক্লায়েন্টের জ্ঞান (বা এর দ্বারা সীমাবদ্ধ) নির্ধারিত হতে পারে, উভয়টিই ফ্লাই-এ উন্নত হতে পারে (উদাহরণস্বরূপ, কোড অন অন ডিমান্ড)।
[এখানে ব্যর্থতা বোঝায় যে আউট-অফ-ব্যান্ডের তথ্য হাইপারটেক্সটের পরিবর্তে ইন্টারঅ্যাকশন চালাচ্ছে]]
আরআরইএসটি একটি স্থাপত্য শৈলী যা ওয়েব-স্ট্যান্ডার্ড এবং এইচটিটিপি প্রোটোকল (2000 সালে প্রবর্তিত) এর উপর ভিত্তি করে।
একটি আরইএসটি ভিত্তিক আর্কিটেকচারে, সবকিছুই একটি সংস্থান (ব্যবহারকারী, আদেশ, মন্তব্য)। এইচটিটিপি স্ট্যান্ডার্ড পদ্ধতিগুলির (জিইটি, পুট, প্যাচ, মোছা ইত্যাদি) এর উপর ভিত্তি করে একটি সাধারণ ইন্টারফেসের মাধ্যমে একটি সংস্থান অ্যাক্সেস করা যেতে পারে।
একটি REST ভিত্তিক আর্কিটেকচারে আপনার কাছে একটি রেস্ট সার্ভার রয়েছে যা সংস্থানগুলিতে অ্যাক্সেস সরবরাহ করে। একটি REST ক্লায়েন্ট REST সংস্থানগুলিতে অ্যাক্সেস এবং সংশোধন করতে পারে।
প্রতিটি সংস্থান HTTP সাধারণ অপারেশন সমর্থন করা উচিত। সংস্থানগুলি বিশ্বব্যাপী আইডি দ্বারা চিহ্নিত করা হয় (যা সাধারণত ইউআরআই হয়)।
আরআরইএসটি অনুমতি দেয় যে সংস্থাগুলির বিভিন্ন উপস্থাপনা থাকে, যেমন, পাঠ্য, এক্সএমএল, জেএসওএন ইত্যাদি। আরইএসটি ক্লায়েন্ট এইচটিটিপি প্রোটোকলের (বিষয়বস্তু আলোচনার) মাধ্যমে একটি নির্দিষ্ট প্রতিনিধিত্ব চাইতে পারে।
এইচটিটিপি পদ্ধতি:
পিইউটি, জিইটি, পোষ্ট এবং ডিলিট পদ্ধতিগুলি রিস্টের ভিত্তিক আর্কিটেকচারগুলিতে সাধারণত ব্যবহৃত হয়। নিম্নলিখিত ক্রমটি এই ক্রিয়াকলাপগুলির একটি ব্যাখ্যা দেয় gives
আরআরইএসটি বলতে প্রতিনিধিত্বমূলক রাষ্ট্রের স্থানান্তর বোঝায় ।
এটি স্টেটহীন, ক্লায়েন্ট-সার্ভার, ক্যাশেযোগ্য যোগাযোগ প্রোটোকলের উপর নির্ভর করে - এবং কার্যত সমস্ত ক্ষেত্রে, এইচটিটিপি প্রোটোকল ব্যবহৃত হয়।
REST প্রায়শই মোবাইল অ্যাপ্লিকেশন, সামাজিক নেটওয়ার্কিং ওয়েবসাইট, ম্যাসআপ সরঞ্জাম এবং স্বয়ংক্রিয় ব্যবসায়িক প্রক্রিয়াগুলিতে ব্যবহৃত হয়। আরআরএসটি স্টাইল জোর দেয় যে ক্লায়েন্ট এবং পরিষেবাদির মধ্যে পারস্পরিক ক্রিয়াটি সীমিত সংখ্যক ক্রিয়াকলাপ (ক্রিয়াপদ) থাকার মাধ্যমে উন্নত হয়। নমনীয়তা তাদের নিজস্ব অনন্য ইউনিভার্সাল রিসোর্স সূচক (ইউআরআই) রিসোর্স (বিশেষ্য) প্রদান করে সরবরাহ করা হয়।
কথা বলা কেবল তথ্য বিনিময় করার চেয়েও বেশি কিছু । একটি প্রোটোকল আসলে এমনভাবে তৈরি করা হয়েছে যাতে কোনও কথাবার্তা না ঘটে। প্রতিটি পক্ষই জানে যে তাদের বিশেষ কাজটি কী কারণ এটি প্রোটোকলে নির্দিষ্ট করা আছে। প্রোটোকলগুলি সম্ভাব্য ক্রিয়ায় কোনও পরিবর্তন আনার ব্যয়ে খাঁটি তথ্য বিনিময়ের অনুমতি দেয়। অন্যদিকে, কথা বলার দ্বারা এক পক্ষকে অন্য পক্ষ থেকে আরও কী পদক্ষেপ নেওয়া যেতে পারে তা জিজ্ঞাসা করার অনুমতি দেয়। এমনকি তারা একই প্রশ্ন দু'বার জিজ্ঞাসা করতে এবং দুটি পৃথক উত্তর পেতে পারে, যেহেতু অন্তর্বর্তী সময়ে অন্য পক্ষের রাজ্য পরিবর্তিত হতে পারে। কথা বলা হল আধ্যাত্মিক আর্কিটেকচার । ফিল্ডিংয়ের থিসিসটি আর্কিটেকচারটি নির্দিষ্ট করে যে কোনও একটি অনুসরণ করতে হবে যদি মেশিনরা একে অপরের সাথে কথা বলার পরিবর্তে কেবল অন্যদের সাথে কথা বলতে দেয় তবেযোগাযোগ ।
প্রতি সেউতে "RESTful প্রোগ্রামিং" এর মত ধারণা নেই। এটি আরও ভাল বলা হবে RESTful দৃষ্টান্ত বা এমনকি আরও ভাল RESTful আর্কিটেকচার। এটি কোনও প্রোগ্রামিং ভাষা নয়। এটি একটি দৃষ্টান্ত।
কম্পিউটিংয়ে, প্রতিনিধিত্বমূলক রাষ্ট্রের স্থানান্তর (আরইএসটি) হ'ল ওয়েব বিকাশের জন্য ব্যবহৃত একটি স্থাপত্য শৈলী।
বিশ্রামের বিষয়টি হ'ল আমরা যদি বেসিক ক্রিয়াকলাপগুলির জন্য একটি সাধারণ ভাষা ব্যবহার করতে রাজি হই (HTTP ক্রিয়াগুলি), অবকাঠামোগুলি সেগুলি বুঝতে এবং তাদের যথাযথভাবে অনুকূল করতে কনফিগার করা যেতে পারে, উদাহরণস্বরূপ, ক্যাচিং শিরোনামকে আদৌ ক্যাচিং প্রয়োগ করার মাধ্যমে মাত্রা।
সঠিকভাবে প্রয়োগ করা বিশ্রামের জিইটি অপারেশন সহ তথ্যটি আপনার সার্ভারের ডিবি, আপনার সার্ভারের মেমক্যাচ, একটি সিডিএন, প্রক্সি ক্যাশে, আপনার ব্রাউজারের ক্যাশে বা আপনার ব্রাউজারের স্থানীয় সঞ্চয়স্থান থেকে আসে কিনা তা বিবেচ্য নয়। দ্রুততম, অতি সহজেই উপলভ্য উত্স অবধি ব্যবহার করা যেতে পারে।
এই বলে যে বিশ্রামটি উপলব্ধ ক্রিয়াকলাপ ব্যবহার করে ক্রিয়া প্যারামিটারের সাথে জিইটি অনুরোধগুলি ব্যবহার করে কেবল একটি সিনট্যাকটিক পরিবর্তন তা এটিকে দেখে মনে হচ্ছে এটির কোনও সুবিধা নেই এবং এটি খাঁটি কসমেটিক। মুল বক্তব্যটি এমন একটি ভাষা ব্যবহার করা যা চেইনের প্রতিটি অংশের দ্বারা বোঝা এবং অনুকূলিত করা যায়। যদি আপনার জিইটি অপারেশনটিতে পার্শ্ব প্রতিক্রিয়াগুলির সাথে ক্রিয়া রয়েছে, আপনাকে সমস্ত এইচটিটিপি ক্যাচিং এড়িয়ে যেতে হবে বা আপনি অসম্পূর্ণ ফলাফলের সাথে শেষ করতে পারেন।
কি এপিআই টেস্টিং ?
এপিআই টেস্টিং এপিআইতে কল প্রেরণ এবং ফলন পেতে প্রোগ্রামিং ব্যবহার করে। এটি পরীক্ষার অধীনে বিভাগটিকে একটি কালো বাক্স হিসাবে বিবেচনা করে। এপিআই পরীক্ষার উদ্দেশ্য হ'ল অ্যাপ্লিকেশনটিতে এর সমন্বয় হওয়ার পূর্বে অংশটির সঠিক সম্পাদন এবং ত্রুটিযুক্ত চিকিত্সা নিশ্চিত করা।
REST এপিআই
বিশ্রাম: প্রতিনিধিত্বমূলক রাষ্ট্র স্থানান্তর।
4 সাধারণভাবে ব্যবহৃত এপিআই পদ্ধতি: -
ম্যানুয়ালি এপিআই পরীক্ষার পদক্ষেপ: -
ম্যানুয়ালি এপিআই ব্যবহার করতে, আমরা ব্রাউজার ভিত্তিক আরএসটি এপিআই প্লাগইন ব্যবহার করতে পারি।
এটি সর্বত্র খুব কম উল্লেখ করা হয়েছে তবে রিচার্ডসনের পরিপক্কতা মডেল হ'ল বাস্তবে কতটা নিরাপদ তার এপিআই বিচার করার অন্যতম সেরা পদ্ধতি। এটি সম্পর্কে এখানে আরও:
আমি বলব যে REST বোঝার জন্য একটি গুরুত্বপূর্ণ বিল্ডিং ব্লকটি এন্ডপয়েন্টস বা ম্যাপিংগুলিতে রয়েছে, যেমন /customers/{id}/balance
।
ওয়েবসাইট (ফ্রন্ট-এন্ড) থেকে আপনার ডাটাবেস / সার্ভারে (ব্যাক-এন্ড) সংযোগকারী পাইপলাইন হিসাবে আপনি এ জাতীয় পয়েন্টটি কল্পনা করতে পারেন। এগুলি ব্যবহার করে, সম্মুখ-প্রান্তটি ব্যাক-এন্ড ক্রিয়াকলাপ সম্পাদন করতে পারে যা আপনার অ্যাপ্লিকেশনটিতে কোনও REST ম্যাপিং সম্পর্কিত পদ্ধতিতে সংজ্ঞায়িত।