RESTful প্রোগ্রামিং ঠিক কী?


3983

RESTful প্রোগ্রামিং ঠিক কী?


3
উত্তরটি নীচের লিঙ্কটিতেও দেখুন stackoverflow.com/a/37683965/3762855
Ciro Corvino

3
বিশ্রামে এখন হয়তো কিছুটা পুরানো হচ্ছে;) youtu.be/WQLzZf34FJ8
ভ্লাদি ভেসেলিনভ

1
এছাড়াও, আরও কিছু তথ্যের জন্য এই লিঙ্কটি রেফারেন্স
আশরাফ.Shk786

এখানে উত্তর গৃহীত হয়েছে সংশোধন। stackoverflow.com/questions/19843480/... অথবা এখানে roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-driven অথবা এখানে web.archive.org/web/20130116005443/http://tomayko। com / লেখা /…
কুশলভম

5
@ ওলিভার.কুও সুন্দর পর্যবেক্ষণ এটা ঠিক যে আমি এটি এমন সময়ে জিজ্ঞাসা করেছি যখন এটি কোনও নতুন জিনিস ছিল। এটি প্রচুর পরিমাণে ছোঁড়াচ্ছিল তবে অনেকে কী জানেন যে এটি কী। কমপক্ষে আমি তা করিনি, এবং মনে হচ্ছে এটি জিজ্ঞাসা করা তাদের সহায়তা করেছে কারণ তারাও জানতে চেয়েছিল।
হেসেন

উত্তর:


743

একটি স্থাপত্য শৈলী নামক বাকি (প্রতিনিধিত্বমূলক রাজ্য স্থানান্তর) অত্যাবশ্যক যে ওয়েব অ্যাপ্লিকেশনের 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 এটি দুটিবার জারি করে কার্টে আইটেমের দুটি অনুলিপি যুক্ত করে। একটি পোস্ট অনুরোধ স্পষ্টভাবে এই প্রসঙ্গে উপযুক্ত। সুতরাং, এমনকি একটি বিশ্রামযুক্ত ওয়েব অ্যাপ্লিকেশনকে তার পোস্টের অনুরোধগুলির ভাগ প্রয়োজন।

এটি ডেভিড এম জিয়ারির দুর্দান্ত জাভা কোর সার্ভার ফেসবুক বই থেকে নেওয়া হয়েছে ।


2
উপলব্ধ আইডেম্পোটেন্ট অপারেশনগুলি তালিকাভুক্ত করুন: জিইটি (নিরাপদ), পুট এবং ডিলেট করুন (ব্যতিক্রমটি এই লিঙ্কটিতে পুনরায় উল্লেখ করা হয়েছে restapitutorial.com/lessons/idempotency.html)। নিরাপদ ও আইডেম্পোটেন্ট পদ্ধতিগুলির জন্য অতিরিক্ত রেফারেন্স w3.org/Protocols/rfc2616/rfc2616-sec9.html
অভিজিৎ

5
ক) জিইটি সম্পর্কে গুরুত্বপূর্ণ বিষয়টি নিরাপদতা, আদর্শের প্রতিযোগিতা নয়, খ) @ অভিজিৎ: আরএফসি ২16১16 টি 2014 সালে অচল করা হয়েছে; আরএফ 7230ff দেখুন।
জুলিয়ান রিশকে

12
এটা ভুল. বিশ্রামের সঠিক ব্যাখ্যার জন্য এই পড়ুন roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-driven বা এই stackoverflow.com/questions/19843480/...
kushalvm

4
@ কুশালভম যে আরইএসটি-র একাডেমিক সংজ্ঞাটি বাস্তবে ব্যবহৃত হয় না।
যুদ্ধের মতো শিম্পাঞ্জি

3
কার্যকরভাবে আমরা ভাবতে পারি যে কোনও ধারণাগুলি কার্যকর কিনা যেহেতু আমরা
সাধারণভাবে

2918

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 আসল অর্থটি আরও ভালভাবে উপস্থাপন করার জন্য আমি উত্তরটি সংশোধন করেছি))


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

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

37
"অ্যাপ্লিকেশন স্টেটের ইঞ্জিন হিসাবে হাইপারটেক্সট" ভুলে যাবেন না।
হ্যাঙ্ক গে

45
এই উত্তরটি পয়েন্টটি মিস করে। ফিল্ডিংয়ের থিসিসে এইচটিটিপি সবে উল্লেখ করা হয়েছে।
ব্যবহারকারী 359996

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

534

RESTful প্রোগ্রামিং সম্পর্কে:

  • একটি অবিচ্ছিন্ন শনাক্তকারী দ্বারা সংস্থান করা হচ্ছে সংস্থানগুলি: ইউআরআই হ'ল এই দিনগুলিতে শনাক্তকারীদের সর্বব্যাপী পছন্দ
  • সম্পদ ক্রিয়ার একটি সাধারণ সেট ব্যবহার কাজে ব্যবহৃত হচ্ছে: HTTP- র পদ্ধতি সাধারণভাবে দেখা ক্ষেত্রে রয়েছে - প্রবীণ Create, Retrieve, Update, Deleteহয়ে POST, GET, PUT, এবং DELETE। তবে REST টি এইচটিটিপি-তে সীমাবদ্ধ নয়, এটি এখনই সর্বাধিক ব্যবহৃত পরিবহণ।
  • রিসোর্সের জন্য প্রাপ্ত প্রকৃত প্রতিনিধিত্বটি অনুরোধের উপর নির্ভর করে এবং শনাক্তকারী নয়: আপনি এক্সএমএল, এইচটিটিপি, এমনকি কোনও জাভা অবজেক্টটি রিসোর্সটির প্রতিনিধিত্ব করতে চান কিনা তা নিয়ন্ত্রণ করতে শিরোনাম গ্রহণ করুন use
  • রাষ্ট্রকে বস্তুতে বজায় রাখা এবং রাষ্ট্রের প্রতিনিধিত্ব করে
  • সংস্থানসমূহের মধ্যকার সম্পর্কের প্রতিনিধিত্ব করে রিসোর্সটির প্রতিনিধিত্ব: অবজেক্টের মধ্যে লিঙ্কগুলি সরাসরি উপস্থাপনের মধ্যে এম্বেড থাকে
  • সংস্থানসমূহের উপস্থাপনা বর্ণনা করে যে উপস্থাপনাটি কীভাবে ব্যবহার করা যেতে পারে এবং কোন পরিস্থিতিতে এটি একটি সামঞ্জস্যপূর্ণ পদ্ধতিতে বাতিল / পুনরায় পাঠানো উচিত: HTTP ক্যাশে-নিয়ন্ত্রণ শিরোনামের ব্যবহার

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

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

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


36
একটি প্রশ্নের পড়ার তালিকা সরবরাহ করা একটি উত্তর এই প্রশ্নের জন্য খুব উপযুক্ত।
এলিস্ববেন 19

25
আপডেটের জন্য ধন্যবাদ. PUTএবং POSTআপডেট এবং তৈরি করে সত্যই একের সাথে এক ম্যাপ করবেন না। PUTক্লায়েন্টটি ইউআরআই কী হবে তা নির্দেশ দিলে তা তৈরি করতে ব্যবহার করা যেতে পারে। POSTসার্ভারটি নতুন ইউআরআই নির্ধারণ করে দিলে তৈরি করে।
ডি.শ্যাওলি

8
প্যাচ ভুলবেন না।
এপিটকা

4
একটি ইউআরএন হ'ল একটি ইউআরআই যা urn:স্কিমটি ব্যবহার করে । ধারণাগতভাবে কোনও পার্থক্য নেই; তবে, একটি ইউআরএন প্রয়োজন হয় যে ইউআরএন দ্বারা সংস্থানিত সংস্থানটি চিহ্নিত (নাম দেওয়া) "সনাক্ত" করার জন্য আপনার একটি পৃথক সংজ্ঞায়িত পদ্ধতি রয়েছে। নামকরণকৃত সংস্থান এবং তাদের অবস্থান সম্পর্কিত ক্ষেত্রে আপনি যদি অন্তর্নিহিত সংযুক্তির পরিচয় না দেন সেদিকে খেয়াল রাখতে হবে।
ডি.শোলে

2
@ এলিস্ব্বেবেন সম্মত হয়েছেন। আমি যদি সঠিকভাবে বুঝতে পারি তবে এটি রচনাটি
ফিলিপ কুলিং

408

এটি দেখতে এটির মতো দেখাচ্ছে।

তিনটি বৈশিষ্ট্য সহ একটি ব্যবহারকারী তৈরি করুন:

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

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

92
শেষ উদাহরণে, @pribitenbach ব্যবহার করে PUT fname=Jonny। এটি সেট করে lnameএবং ageডিফল্ট মানগুলিতে (সম্ভবত NULL বা খালি স্ট্রিং, এবং পূর্ণসংখ্য 0) সেট করে, কারণ একটি উপস্থাপন থেকে প্রাপ্ত ডেটা সহ PUT পুরো সংস্থানটি ওভাররাইট করে । এটি "আপডেট" দ্বারা বোঝানো হয় না, আসল আপডেট করার জন্য PATCHপদ্ধতিটি ব্যবহার করুন কারণ এটি এমন ক্ষেত্রগুলিকে পরিবর্তন করে না যা প্রতিনিধিত্ব করে না specified
নিকোলাস শ্যাঙ্কস

24
নিকোলাস ঠিক আছে। এছাড়াও, প্রথম ব্যবহারকারী পোষ্ট তৈরির জন্য ইউআরআই ব্যবহারকারী হওয়া উচিত কারণ /user/1কোনও বুদ্ধি নেই এবং সেখানে একটি তালিকা থাকা উচিত /users। প্রতিক্রিয়া একটি হওয়া উচিত 201 Createdএবং এক্ষেত্রে ঠিক আছে না।
ড্যানমান

1
এটি কেবলমাত্র একটি এএসআইর উদাহরণ যা অপরিহার্যভাবে একটি রেস্টলফুল এপিআই নয়। একটি রেস্টস্টুল এর প্রতিবন্ধকতা রয়েছে। ক্লায়েন্ট-সার্ভার আর্কিটেকচার, স্টেটলেস, ক্যাশে-ক্ষমতা, স্তরযুক্ত সিস্টেম, ইউনিফর্ম ইন্টারফেস।
র‌্যাডমেশন

একটি খুব কমপ্যাক্ট জবাব দেয় যা সমস্ত HTTP সার্লেট অ্যাক্সেসের পদ্ধতিগুলি কভার করে
হিমাংশু আহুজা

181

অনুশীলনের মধ্যে REST হল একটি দুর্দান্ত বই ।

অবশ্যই পড়তে হবে প্রতিনিধিত্বমূলক স্টেট ট্রান্সফার (REST) এবং REST এপিআই অবশ্যই হাইপারটেক্সট-চালিত হওয়া উচিত

একটি রেস্টস্টুল সার্ভিস কী তা সম্পর্কে ব্যাখ্যার জন্য মার্টিন ফোলার্স রিচার্ডসন ম্যাচিউরিটি মডেল (আরএমএম) নিবন্ধটি দেখুন ।

রিচার্ডসন পরিপক্কতা মডেল

বিশ্রামের জন্য কোনও পরিষেবাকে হাইপারমিডিয়া পূরণ করতে হবে অ্যাপ্লিকেশন স্টেটের ইঞ্জিন হিসাবে। (হেটোয়াস) , এটি আরএমএমের 3 স্তরে পৌঁছাতে হবে, বিবরণের জন্য নিবন্ধটি পড়ুন বা কিউকন টক থেকে স্লাইডগুলি পড়ুন

HATEOAS সীমাবদ্ধতা হ'ল হাইপারমিডিয়া এর অ্যাপ্লিকেশন স্টেটের ইঞ্জিন হিসাবে সংক্ষিপ্ত রূপ। এই নীতিটি একটি REST এবং ক্লায়েন্ট সার্ভার সিস্টেমের বেশিরভাগ অন্যান্য ফর্মের মধ্যে মূল পার্থক্যকারী।

...

একটি RESTful অ্যাপ্লিকেশনটির ক্লায়েন্টের অ্যাক্সেসের জন্য কেবল একটি একক স্থির URL জানতে হবে। ভবিষ্যতের সমস্ত ক্রিয়াকলাপগুলি সেই URL থেকে ফিরে আসা সংস্থাগুলির উপস্থাপনার অন্তর্ভুক্ত হাইপারমিডিয়া লিঙ্কগুলি থেকে গতিশীলভাবে আবিষ্কারযোগ্য হওয়া উচিত। স্ট্যান্ডার্ডাইজড মিডিয়া প্রকারগুলি এমন কোনও ক্লায়েন্ট দ্বারা বোঝা যাবে যা একটি RESTful API ব্যবহার করতে পারে। (উইকিপিডিয়া থেকে, বিনামূল্যে এনসাইক্লোপিডিয়া)

ওয়েব ফ্রেমওয়ার্কের জন্য রিস্ট লিটমাস টেস্ট হ'ল ওয়েব ফ্রেমওয়ার্কের জন্য অনুরূপ পরিপক্কতা পরীক্ষা।

খাঁটি আরআরইএসটির কাছে পৌঁছানো: হেটোয়াসকে ভালবাসা শেখা লিঙ্কগুলির একটি ভাল সংগ্রহ।

পাবলিক ক্লাউডের জন্য REST বনাম এসওএপি আরএসটি ব্যবহারের বর্তমান স্তরের আলোচনা করে।

REST এবং সংস্করণে পরিমার্জনযোগ্যতার মাধ্যমে এক্সটেনসিবিলিটি, সংস্করণ , বিবর্তনযোগ্যতা ইত্যাদি নিয়ে আলোচনা করা হয়


5
আমি মনে করি এই উত্তরটি REST বোঝার মূল বিষয়টিকে স্পর্শ করেছে: প্রতিনিধিত্বমূলক শব্দের অর্থ কী। স্তর 1 - সম্পদ রাষ্ট্র সম্পর্কে বলে । স্তর 2 - এইচটিটিপি ক্রিয়াগুলি স্থানান্তর (পঠন পরিবর্তন ) সম্পর্কে বলে । স্তর 3 - হাতিওএএস বলছে প্রতিনিধিত্বের মাধ্যমে ভবিষ্যতের স্থানান্তর চালনা (জেএসএন / এক্সএমএল / এইচটিএমএল ফিরে এসেছে), যার অর্থ আপনি কীভাবে ফিরে আসা তথ্যের সাথে পরবর্তী দফায় কথা বলতে পারবেন তা জানা গেল। সুতরাং আরআরইএসটি পড়ে: "(প্রতিনিধিত্বমূলক (রাষ্ট্রীয় স্থানান্তর))" "," ((প্রতিনিধিত্বমূলক রাষ্ট্র) স্থানান্তর) "এর পরিবর্তে।
lcn


136

রেস্ট কি?

আরআরইএসটি বলতে প্রতিনিধিত্বমূলক রাজ্য স্থানান্তর বোঝায়। (এটি কখনও কখনও "আরএসটি" বানান করা হয়)) এটি স্টেটহীন, ক্লায়েন্ট-সার্ভার, ক্যাশেযোগ্য যোগাযোগ প্রোটোকলের উপর নির্ভর করে - এবং কার্যত সমস্ত ক্ষেত্রে এইচটিটিপি প্রোটোকল ব্যবহৃত হয়।

নেটওয়ার্ক অ্যাপ্লিকেশনগুলি ডিজাইনের জন্য REST হ'ল একটি আর্কিটেকচার শৈলী। ধারণাটি হ'ল, মেশিনের মধ্যে সংযোগ স্থাপনের জন্য CORBA, RPC বা SOAP এর মতো জটিল প্রক্রিয়া ব্যবহার না করে, সাধারণ HTTP মেশিনের মধ্যে কল করতে ব্যবহৃত হয়।

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

আরআরসিটি হ'ল আরপিসি (রিমোট প্রক্রিয়া কল) এবং ওয়েব সার্ভিসেস (এসওএপি, ডাব্লুএসডিএল, ইত্যাদি।) এর মতো ব্যবস্থার জন্য একটি হালকা ওজনের বিকল্প। পরে, আমরা দেখতে পাব REST কত সাধারণ।

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

বিশ্রামের সহজ আসল অর্থ সন্ধান করার চেষ্টা করার সময় আমি খুঁজে পেয়েছি এমন একটি সেরা রেফারেন্স।

http://rest.elkstein.org/


এটি একটি সত্যই সংক্ষিপ্ত উত্তর। কেন আপনি বিশদকে রাষ্ট্রহীন বলা হয় তা বর্ণনা করতে পারেন?
চাকলাদার আসফাক আরেফে

89

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

18
এটি হ'ল "এইচটিটিপি সঠিকভাবে ব্যবহার করা", যা "বিশ্রামের" মতো নয় (যদিও এটি এর সাথে সম্পর্কিত)
জুলিয়ান রেশকে

2
আপনি / ব্যবহারকারী / ডেল / 2 এবং / ব্যবহারকারী / অপসারণ / 2 বা ... ব্যবহার করতে পারেন ... এই জাতীয় জিনিসগুলি করার জন্য কেবল "যথাযথ" উপায় (জিইটি / ডিলেট / পুট / পোষ্ট) হয় (এবং জুলিয়ান যেমন বলে, এটি সব কিছু নয় বিশ্রাম নিতে হবে)
ডিবিআর

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

14
ভাদিম, এটি কেবল আরপিসি হবে। তথ্য পরিবর্তন করার জন্য জিইটি ব্যবহার করাও বিপজ্জনক, যেহেতু (অন্যান্য কারণে) কোনও অনুসন্ধান ইঞ্জিন আপনার মোছার লিঙ্কগুলিকে মাকড়সা করতে পারে এবং সেগুলি সবগুলি দেখতে পারে।
এহেলকে

7
@ এহেল্কে - আমি মনে করি সেখানে আসল প্রশ্নটি হবে "একজন বেনাম ব্যবহারকারী আপনার সিস্টেম থেকে রেকর্ড মুছতে পারবেন কেন?"
স্পেনসার রুপোর্ট

68

এটি এমন প্রোগ্রামিং করছে যেখানে আপনার সিস্টেমের আর্কিটেকচারটি রয় ফিল্ডিংয়ের থিসিসে নির্ধারিত REST স্টাইলটি ফিট করে । যেহেতু এটি স্থাপত্য শৈলী যা ওয়েব বর্ণনা করে (কম বেশি), তাই প্রচুর লোক এতে আগ্রহী।

বোনাস উত্তর: না আপনি যদি একাডেমিক বা ডিজাইনের ওয়েব পরিষেবাদি হিসাবে সফ্টওয়্যার আর্কিটেকচার অধ্যয়ন না করেন তবে শব্দটি শোনার কোনও কারণ নেই।


2
তবে সোজা-এগিয়ে নয় .. এটি আরও জটিল করে তোলে যা এটি হওয়া দরকার।
হাসেন

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

3
ফিল্ডিংয়ের ব্লগে REST এবং সাধারণ ভুল ধারণা সম্পর্কে নিবন্ধগুলি বোঝার জন্য কিছু ভাল, সহজ রয়েছে: roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-driven
aehlke

3
@ হ্যাঙ্কগেই আমি মনে করি এটি আরও বেশি গৌরবযুক্ত না হওয়ার কারণ হ'ল বেশিরভাগ ওয়েব সার্ভিস বিকাশকারীরা এসইএপি-র মতো বিকল্পের চেয়ে বিশ্রামকে একটি দুর্দান্ত সরলকরণ হিসাবে দেখেন। তারা অবশ্যই সমস্ত আরআরইএসটি প্রযুক্তিগত দিকগুলি সঠিকভাবে আঁকড়ে ধরে রাখে না - এবং এটি সম্ভবত আরআরএসটি ধর্মান্ধদের উন্মাদ করে - তবে বেশিরভাগ ক্ষেত্রে তাদের ফলাফলগুলি "হাইপারমিডিয়া-সক্ষম" হওয়ার বিষয়টি নিশ্চিত করার মতো বিষয়গুলির জন্য তাদের সম্ভবত উদ্বিগ্ন হওয়ার দরকার নেই।
মুডবুম

47

আমি বলব যে RESTful প্রোগ্রামিং হ'ল এমন সিস্টেম (এপিআই) তৈরি করা যা REST স্থাপত্য শৈলী অনুসরণ করে।

ডাঃ এম.এলকস্টেইনের REST সম্পর্কে টিউটোরিয়ালটি আমি এই চমত্কার, সংক্ষিপ্ত এবং সহজেই বুঝতে পেরেছি এবং বেশিরভাগ অংশে আপনার প্রশ্নের উত্তর দেবে এমন প্রয়োজনীয় অংশটি উদ্ধৃত করে:

শিখুন রেস্ট: একটি টিউটোরিয়াল

নেটওয়ার্ক অ্যাপ্লিকেশনগুলি ডিজাইনের জন্য REST হ'ল একটি আর্কিটেকচার শৈলী । ধারণাটি হ'ল, মেশিনের মধ্যে সংযোগ স্থাপনের জন্য CORBA, RPC বা SOAP এর মতো জটিল প্রক্রিয়া ব্যবহার না করে, সাধারণ HTTP মেশিনের মধ্যে কল করতে ব্যবহৃত হয়।

  • বিভিন্ন উপায়ে, নিজেই এইচটিটিপি ভিত্তিক ওয়ার্ল্ড ওয়াইড ওয়েবকে একটি রেস্ট-ভিত্তিক আর্কিটেকচার হিসাবে দেখা যেতে পারে।

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

আমি মনে করি না স্ট্যাক ওভারফ্লোয়ের বাইরে আরআরএসটি না শুনে আপনার বোকা বোধ করা উচিত ..., আমি একই পরিস্থিতিতে থাকব! বিশ্রাম কেন এখন বড় হচ্ছে সে সম্পর্কে এই অন্য SO প্রশ্নের উত্তর কিছুটা অনুভূতি হ্রাস করতে পারে।



45

আমি যদি সরাসরি প্রশ্নের উত্তর না দিচ্ছি তবে আমি ক্ষমাপ্রার্থী, তবে আরও বিস্তারিত উদাহরণ দিয়ে এগুলি বোঝা আরও সহজ। সমস্ত বিমূর্ততা এবং পরিভাষার কারণে ফিল্ডিং বোঝা সহজ নয়।

এখানে মোটামুটি ভাল উদাহরণ রয়েছে:

বিশ্রাম এবং হাইপারটেক্সট ব্যাখ্যা: স্প্যাম-ই স্প্যাম ক্লিনিং রোবট

এবং আরও ভাল, এখানে সাধারণ উদাহরণ সহ একটি পরিষ্কার ব্যাখ্যা রয়েছে (পাওয়ারপয়েন্টটি আরও বিস্তৃত, তবে আপনি এর বেশিরভাগ এইচটিএমএল সংস্করণে পেতে পারেন):

http://www.xfront.com/REST.ppt বা http://www.xfront.com/REST.html

উদাহরণগুলি পড়ার পরে আমি দেখতে পেলাম কেন কেন বলছে যে REST হাইপারটেক্সট চালিত। আমি যদিও নিশ্চিত যে তিনি ঠিকই ছিলেন না, কারণ সেই / ব্যবহারকারী / 123 হ'ল একটি ইউআরআই যা কোনও উত্সকে দেখায় এবং এটি আমার কাছে স্পষ্ট নয় যে ক্লায়েন্ট সম্পর্কে "আউট-ব্যান্ড" সম্পর্কে জানেন কেবল কারণ এটি অস্থির ful

এই এক্সফ্রন্ট ডকুমেন্টটি রেস্ট এবং এসওএপি মধ্যে পার্থক্য ব্যাখ্যা করে এবং এটি সত্যই সহায়ক। ফিল্ডিং যখন বলে, " এটি আরপিসি It এটি আরপিসির চিৎকার করে " ", এটি স্পষ্ট যে RPC বিশ্রামপ্রবণ নয়, সুতরাং এর সঠিক কারণগুলি দেখতে এটি দরকারী। (এসওএপি হ'ল এক ধরণের আরপিসি))


12
ধন্যবাদ ধন্যবাদ। আমি এই REST ছেলেরা সম্পর্কে ক্লান্ত হয়ে পড়েছি যারা বলে যে কিছু উদাহরণ "REST- ফুল" নয়, তবে উদাহরণটি কীভাবে REST- ফুল হিসাবে পরিবর্তন করা যায় তা বলতে অস্বীকার করি।
কোডার_টিম

38

রেস্ট কি?

সরকারী কথায় REST, REST হ'ল বর্তমান "ওয়েব" ফান্ডামেন্টালগুলি ব্যবহার করে নির্দিষ্ট নীতিগুলিতে নির্মিত একটি স্থাপত্য শৈলী। ওয়েবে 5 টি বেসিক ফান্ডামেন্টাল রয়েছে যা আরআরএসটি পরিষেবাগুলি তৈরি করার জন্য লিভারেজ করা হয়।

  • নীতিমালা 1: সবকিছুই একটি সংস্থানসমূহ আরআরএসটি স্থাপত্য শৈলীতে ডেটা এবং কার্যকারিতাটিকে সংস্থান হিসাবে বিবেচনা করা হয় এবং ইউনিফর্ম রিসোর্স আইডেন্টিফায়ার (ইউআরআই) ব্যবহার করে অ্যাক্সেস করা হয়, সাধারণত ওয়েবে লিঙ্কগুলি on
  • নীতি 2: প্রতিটি সংস্থান একটি অনন্য শনাক্তকারী (ইউআরআই) দ্বারা সনাক্ত করা হয়
  • মূল নীতি 3: সহজ এবং অভিন্ন ইন্টারফেস ব্যবহার করুন
  • মূল নীতি 4: প্রতিনিধিত্ব করে যোগাযোগ সম্পন্ন হয়
  • নীতি 5: রাষ্ট্রহীন হন

1
কী Communication is Done by Representationমানে?
mendez7

33

আমি উত্তরগুলির একগুচ্ছ দেখতে পাচ্ছি যা বলছে যে ব্যবহারকারী 123 সম্পর্কে "রিসোর্স" / ব্যবহারকারীর / 123 "এ থাকা সমস্ত কিছু বিশ্রামযোগ্য।

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

সুতরাং যদি আপনার "/ ব্যবহারকারীর / 123" পথটি ক্লায়েন্টটিতে হার্ডকোড করা থাকে তবে এটি সত্যই আরামদায়ক নয়। এইচটিটিপি-র একটি ভাল ব্যবহার, সম্ভবত, সম্ভবত না। তবে বিশ্রামের নয়। এটি হাইপারটেক্সট থেকে আসতে হবে।


7
সুতরাং .... কীভাবে উদাহরণটি বিশ্রামে থাকবে? আপনি কীভাবে ইউআরএলটিকে বিশ্রাম দেওয়ার জন্য পরিবর্তন করবেন?
হাসেন

1
হেসেন: সমস্ত অপারেশনের জন্য একটি সংস্থান ব্যবহার করা বিশ্রামের জন্য প্রয়োজনীয় হতে পারে তবে এটি পর্যাপ্ত নয় ।
কেন

18
ঠিক আছে .. আপনি আরও ব্যাখ্যা করতে পারেন? আপনি কী জানেন (বা ভাবেন) ঠিক বলেছেন তা না বলেই "এই ছেলেরা ভুল নয় .. আমি কী সঠিক তা জানি" বলার কী দরকার?
হাসেন 22:55

5
ফিল্ডিংয়ের বর্ণনার লিঙ্কটি দিয়েছি। আমি ভেবেছিলাম আমি অন্যান্য প্রতিক্রিয়াগুলির তুলনায় ঠিক প্রাসঙ্গিক পার্থক্য বলেছেন: হাইপারটেক্সট দ্বারা চালিত হওয়া দরকার। যদি "/ ব্যবহারকারী / 123" ব্যান্ড-অফ-ব্যান্ড এপিআই ডকুমেন্টেশন থেকে আসে তবে এটি আরামদায়ক নয়। এটি যদি আপনার হাইপারটেক্সটে কোনও উত্স শনাক্তকারী থেকে আসে তবে তা।
কেন

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

26

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

RESTful শব্দটি তৈরি করা হয়েছিল কারণ পিপিএল তাদের RE-REST অ্যাপ্লিকেশনটিকে REST হিসাবে ডেকে REST শব্দটি ফুরিয়েছে। এরপরে RESTful শব্দটিও শেষ হয়ে গেল। আজকাল আমরা ওয়েব এপিআই এবং হাইপারমিডিয়া এপিআই সম্পর্কে কথা বলছি কারণ বেশিরভাগ তথাকথিত আরআরইএসটি অ্যাপ্লিকেশনগুলি ইউনিফর্ম ইন্টারফেসের সীমাবদ্ধতার HATEOAS অংশটি পূরণ করে নি।

বিশ্রামের সীমাবদ্ধতাগুলি নিম্নলিখিত:

  1. ক্লায়েন্ট-সার্ভার আর্কিটেকচার

    সুতরাং এটি উদাহরণস্বরূপ পিইউবি / এসইউবি সকেটগুলির সাথে কাজ করে না, এটি আরইকিউ / আরইপি ভিত্তিক।

  2. রাষ্ট্রহীন যোগাযোগ

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

  3. আপনি যদি পারেন ক্যাশে ব্যবহার

    সুতরাং আপনাকে বার বার একই অনুরোধগুলি সরবরাহ করতে হবে না।

  4. ক্লায়েন্ট এবং সার্ভারের মধ্যে সাধারণ চুক্তি হিসাবে অভিন্ন ইন্টারফেস

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

    উদাহরণস্বরূপ যখন কোনও ক্লায়েন্ট কোনও ওয়েবশপে একটি অর্ডার প্রেরণ করতে চায় তখন ওয়েবশপ দ্বারা প্রেরিত প্রতিক্রিয়াগুলিতে হাইপারলিংকগুলি পরীক্ষা করতে হবে। লিঙ্কগুলি পরীক্ষা করে এটি http://schema.org/OrderAction এর সাথে বর্ণিত একটির সন্ধান করে । ক্লায়েন্টটি স্কিমা.অর্গ.ওয়েকাবল জানেন, সুতরাং এটি বুঝতে পারে যে এই হাইপারলিংকটি সক্রিয় করে এটি আদেশটি প্রেরণ করবে। সুতরাং এটি হাইপারলিঙ্কটি সক্রিয় করে এবং POST https://example.com/api/v1/orderসঠিক শরীরের সাথে একটি বার্তা প্রেরণ করে । এর পরে পরিষেবা বার্তাটি প্রসেস করে এবং যথাযথ HTTP স্থিতির শিরোনামযুক্ত ফলাফলটির সাথে সাড়া দেয়, উদাহরণস্বরূপ 201 - createdসাফল্যের দ্বারা by আরডিএফ ফর্ম্যাটটি ব্যবহারের জন্য স্ট্যান্ডার্ড সমাধানের সাথে বিশদ মেটাডাটা সহ বার্তাগুলি টীকাতে উদাহরণস্বরূপ, জেএসএন -এলডি একটি আরএসটি ভোকাব সহ , উদাহরণস্বরূপ হাইড্রা এবং ডোমেনের নির্দিষ্ট ভোকাব যেমনস্কিমা.আর.অর্গ বা অন্য কোনও লিঙ্কযুক্ত ডেটা ভোকাব এবং যদি প্রয়োজন হয় তবে কাস্টম অ্যাপ্লিকেশন নির্দিষ্ট ভোকাব। এখন এটি সহজ নয়, এ কারণেই বেশিরভাগ পিপিএল এইচএল এবং অন্যান্য সাধারণ ফর্ম্যাটগুলি ব্যবহার করে যা সাধারণত কেবলমাত্র একটি আরএসটি ভোকাব সরবরাহ করে তবে কোনও লিঙ্কযুক্ত ডেটা সমর্থন করে না।

  5. স্কেলিবিলিটি বাড়াতে একটি স্তরযুক্ত সিস্টেম তৈরি করুন

    আরআরইএসটি সিস্টেম হায়ারারিকিকাল স্তরগুলির সমন্বয়ে গঠিত। প্রতিটি স্তরের এমন উপাদান রয়েছে যা উপাদানগুলির পরিষেবাদি ব্যবহার করে যা নীচের পরবর্তী স্তরটিতে রয়েছে। সুতরাং আপনি অনায়াসে নতুন স্তর এবং উপাদান যুক্ত করতে পারেন।

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

  6. ক্লায়েন্টের কার্যকারিতা বাড়ানোর দাবিতে কোড

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

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


22

RESTful (প্রতিনিধিত্বমূলক রাষ্ট্র স্থানান্তর) এপিআই প্রোগ্রামিং 5 বেসিক সফ্টওয়্যার আর্কিটেকচারাল স্টাইলের নীতি অনুসরণ করে যে কোনও প্রোগ্রামিং ভাষায় ওয়েব অ্যাপ্লিকেশন লিখছে :

  1. সংস্থান (তথ্য, তথ্য)।
  2. অনন্য গ্লোবাল শনাক্তকারী (সমস্ত সংস্থানগুলি ইউআরআই দ্বারা সনাক্ত করা স্বতন্ত্র )।
  3. ইউনিফর্ম ইন্টারফেস - সাধারণ এবং স্ট্যান্ডার্ড ইন্টারফেস (HTTP) ব্যবহার করুন।
  4. প্রতিনিধিত্ব - সমস্ত যোগাযোগ উপস্থাপনের মাধ্যমে সম্পন্ন হয় (যেমন এক্সএমএল / জেএসএন )
  5. রাষ্ট্রহীন (প্রতিটি অনুরোধ সম্পূর্ণ বিচ্ছিন্নভাবে ঘটে, ক্যাশে করা এবং ভার ভারসাম্য সহজ),

অন্য কথায় আপনি HTTP- র উপরে সরল পয়েন্ট-টু-পয়েন্ট নেটওয়ার্ক অ্যাপ্লিকেশন লিখছেন যা GET, POST, PUT বা DELETE এর মতো ক্রিয়াগুলি ব্যবহার করে RESTful আর্কিটেকচার প্রয়োগ করে যা প্রতিটি "সংস্থান" প্রকাশ করে ইন্টারফেসের মানককরণের প্রস্তাব দেয়। এটি সহজ এবং কার্যকর উপায়ে (অত্যন্ত সফল, প্রমাণিত এবং বিতরণকৃত আর্কিটেকচার) ওয়েবে বর্তমান বৈশিষ্ট্যগুলি ব্যবহার করা কিছুই নয়। এটি আরও জটিল পদ্ধতির যেমন এসওএপি , করবা এবং আরপিসির বিকল্প

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


17

যদি আমাকে আরইএসটি-র মূল গবেষণামূলক প্রবণতাটি মাত্র 3 টি ছোট বাক্যে কমাতে হয়, আমি মনে করি নিম্নলিখিতটি তার মূলত ধারণ করেছে:

  1. সংস্থানগুলি ইউআরএল এর মাধ্যমে অনুরোধ করা হয়েছে।
  2. প্রোটোকলগুলি ইউআরএল ব্যবহার করে আপনি কী যোগাযোগ করতে পারবেন তা সীমাবদ্ধ।
  3. মেটাডেটা নাম-মান জোড়া (পোস্ট ডেটা এবং কোয়েরি স্ট্রিং প্যারামিটার) হিসাবে পাস করা হয়।

এর পরে, অভিযোজন, কোডিং কনভেনশন এবং সেরা অনুশীলনগুলি সম্পর্কে বিতর্কগুলির মধ্যে পড়ে।

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

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


17

আরআরইএসটি হ'ল একটি আর্কিটেকচারাল রীতি এবং বিতরণ অ্যাপ্লিকেশনগুলির লেখার স্টাইল। এটি সংকীর্ণ অর্থে কোনও প্রোগ্রামিং শৈলী নয়।

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

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

বোনাস:

পুরো ওয়েবটি আরইএসটি (বা ওয়েস্টের উপর ভিত্তি করেই রিস্ট ছিল) এর উপর ভিত্তি করে। সুতরাং ওয়েব বিকাশকারী হিসাবে আপনি এটি সম্পর্কে সচেতন হতে পারেন যদিও ভাল ওয়েব অ্যাপ্লিকেশন লেখার প্রয়োজন নেই।


17

এখানে আমার REST এর বেসিক রূপরেখা দেওয়া আছে। আমি একটি বিশিষ্ট আর্কিটেকচারের প্রতিটি উপাদানগুলির পিছনের চিন্তাভাবনাটি প্রদর্শনের চেষ্টা করেছি যাতে ধারণাটি বুঝতে আরও স্বজ্ঞাত হয়। আশা করি এটি কিছু লোকের জন্য বিশ্রামে বিশ্রামে সহায়তা করবে!

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

  • সর্বাধিক সুস্পষ্ট প্রয়োজন হ'ল কোনও ধরণের সার্বজনীন ভাষা হওয়া দরকার যাতে সার্ভার ক্লায়েন্টকে অনুরোধটি দিয়ে কী করার চেষ্টা করছে এবং সার্ভারের প্রতিক্রিয়া জানাতে পারে tell

  • তবে প্রদত্ত যে কোনও সংস্থান খুঁজে পেতে এবং তারপরে ক্লায়েন্টকে সেই সংস্থানটি কোথায় থাকে তা জানানোর জন্য, সেখানে সংস্থানগুলি দেখানোর একটি সর্বজনীন উপায় হওয়া দরকার be ইউনিভার্সাল রিসোর্স আইডেন্টিফায়ার (ইউআরআই) এখানে আসে; এগুলি সংস্থানগুলি খুঁজে পেতে মূলত অনন্য ঠিকানা।

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

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

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

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

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


15

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

ইন্টারনেট যুগে প্রোগ্রামিংয়ের মৌলিক পরিবর্তনগুলি পরিচালনা করার জন্য এটি সর্বোত্তম ব্যবহারিক পদ্ধতি ছিল। মৌলিক পরিবর্তনগুলি সম্পর্কে, এরিক মেইজারের এখানে শোতে একটি আলোচনা রয়েছে: http://www.infoq.com/interviews/erik-meijer-programming-language-design-effects-purity#view_93197 । তিনি এটিকে পাঁচটি প্রভাব হিসাবে সংক্ষিপ্ত বিবরণ দিয়েছেন এবং একটি প্রোগ্রামিং ভাষায় সমাধানটি ডিজাইন করে একটি সমাধান উপস্থাপন করেন। সমাধানটি, ভাষা নির্বিশেষে প্ল্যাটফর্ম বা সিস্টেম পর্যায়ে অর্জন করা যেতে পারে। বিশ্রামগ্রহকে এমন একটি সমাধান হিসাবে দেখা যেতে পারে যা বর্তমান অনুশীলনে খুব সফল হয়েছে।

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

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

শুধু আমার 2 সি।

সম্পাদনা করুন: আরও দুটি গুরুত্বপূর্ণ দিক:


1
একটি এমভিসি দৃষ্টিভঙ্গি: ব্লগ রেস্ট ওয়ারস্ট অভ্যাসগুলি মডেল এবং সংস্থানগুলি বিবাদ না করার পরামর্শ দিয়েছে । জাজানো টু স্কুপস বইটি পরামর্শ দেয় যে রেস্ট এপিআই হ'ল, এবং ব্যবসায়ের যুক্তিগুলিকে ভিউতে মিশ্রিত করা নয়। অ্যাপ্লিকেশনটির কোডটি অ্যাপে থাকা উচিত।
মিঙ্গুয়া


14

এটি আশ্চর্যজনকভাবে দীর্ঘ "আলোচনা" এবং তবুও কমপক্ষে বলতে বেশ বিভ্রান্তিকর।

আইএমও:

1) বিশ্রামমূলক প্রোগ্রামিংয়ের মতো কোনও জিনিস নেই, একটি বড় জয়েন্ট এবং প্রচুর বিয়ার ছাড়াই :)

২) প্রতিনিধিত্বমূলক রাজ্য স্থানান্তর (আরইএসটি) হল রয় ফিল্ডিংয়ের গবেষণামূলক প্রবন্ধে নির্দিষ্ট একটি স্থাপত্য শৈলী । এটিতে অনেকগুলি বাধা রয়েছে। আপনার পরিষেবা / ক্লায়েন্ট যদি তাদের সম্মান করে তবে তা বিশ্রামের। এই হল.

আপনি বাধাগুলি সংক্ষিপ্ত করতে (উল্লেখযোগ্যভাবে) করতে পারেন:

  • রাষ্ট্রহীন যোগাযোগ
  • HTTP চশমা সম্মান (যদি HTTP ব্যবহৃত হয়)
  • স্পষ্টভাবে প্রেরিত সামগ্রী ফর্ম্যাট যোগাযোগ করে
  • অ্যাপ্লিকেশন স্টেটের ইঞ্জিন হিসাবে হাইপারমিডিয়া ব্যবহার করুন

আরও একটি খুব ভাল পোস্ট রয়েছে যা জিনিসগুলি সুন্দরভাবে ব্যাখ্যা করে।

প্রচুর উত্তরগুলি বৈধ তথ্যের সাথে এটি মিশ্রিত করে এবং কিছু বিভ্রান্তি যুক্ত করে অনুলিপি করেছে / আটকিয়েছে। লোকেরা এখানে স্তরের বিষয়ে কথা বলে, আরইএসটিফুল ইউআরআই সম্পর্কে (এমন কোনও জিনিস নেই!), এইচটিটিপি পদ্ধতি প্রয়োগ করুন, পোষ্ট করুন, পুট করুন ... REST কেবল এটি সম্পর্কে নয় বা এটি নয়।

উদাহরণস্বরূপ লিঙ্কগুলি - সুন্দর চেহারাযুক্ত এপিআই থাকা ভাল তবে শেষ পর্যন্ত ক্লায়েন্ট / সার্ভারটি আপনাকে যে লিঙ্কগুলি পাবে / প্রেরণ করবে সেগুলি সত্যই যত্নশীল নয় এটি হ'ল বিষয়বস্তু।

শেষ পর্যন্ত কোনও RESTful ক্লায়েন্টকে যতক্ষণ না সামগ্রীর ফর্ম্যাটটি জানা যায় ততক্ষণ কোনও RESTful পরিষেবায় গ্রাস করতে সক্ষম হওয়া উচিত।


14

পুরানো প্রশ্ন, উত্তর দেওয়ার নতুন পদ্ধতি। এই ধারণাটি সম্পর্কে সেখানে প্রচুর ভুল ধারণা রয়েছে। আমি সবসময় মনে রাখার চেষ্টা করি:

  1. কাঠামোগত ইউআরএল এবং এইচটিটিপি পদ্ধতি / ক্রিয়াগুলি বিশ্রামের প্রোগ্রামিংয়ের সংজ্ঞা নয়।
  2. জেএসওএন স্থির প্রোগ্রামিং নয়
  3. RESTful প্রোগ্রামিং এপিআই এর জন্য নয়

আমি হিসাবে বিশ্রাম প্রোগ্রামিং সংজ্ঞা

কোনও অ্যাপ্লিকেশন যদি মিডিয়া প্রকারে ক্লায়েন্ট বুঝতে পারে তবে এটি সংস্থাগুলি (ডেটা + রাষ্ট্রীয় রূপান্তর নিয়ন্ত্রণের সংমিশ্রণ) সরবরাহ করে যদি তা প্রশান্ত থাকে

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

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

আমি স্ব প্রচারের দিকে লক্ষ্য রাখছি না, তবে আমি এই আলোচনাগুলিতে আমার আলাপের গভীর গভীরতায় প্রসারিত করছি http://techblog.bodybuilding.com/2016/01/video- কি- is- restful- 200.html

আমার আলাপের একটি অংশটি প্রায়শই রিচার্ডসন পরিপক্কতার মডেল সম্পর্কে উল্লেখ করা হয়, আমি স্তরগুলিতে বিশ্বাস করি না, আপনি হয় বিশ্রামপ্রাপ্ত (স্তর 3) অথবা আপনি নন, তবে আমি কী সম্পর্কে এটি বলতে চাই প্রতিটি স্তর এটিই বিশ্রামের পথে আপনার জন্য করে

রিচার্ডসন পরিপক্কতা মডেল টিকা দেওয়া


12

একটি - বিশ্রাম 6 স্থাপত্য সীমাবদ্ধতার যা কোন ওয়েব সেবা করতে সংজ্ঞায়িত সত্য RESTful API

  1. ইউনিফর্ম ইন্টারফেস
  2. ক্লায়েন্ট সার্ভার
  3. আড়ম্বরহীন
  4. ক্যাশেবেল
  5. স্তরযুক্ত সিস্টেম
  6. চাহিদা অনুসারে কোড (alচ্ছিক)

https://restfulapi.net/rest-architectural-constraints/


ফিল্ডিং আরও কিছু বিধি যুক্ত করেছে RESTful APIs / ক্লায়েন্টদের মেনে চলতে হবে
রোমান ভটনার

11

REST === এইচটিটিপি সাদৃশ্যটি সঠিক নয় যতক্ষণ না আপনি এই বিষয়টিকে চাপ দিতে হবে না যে এটি " হেস্টোএএস " চালিত হওয়া উচিত।

রায় নিজেই এখানে এটি পরিষ্কার করেছেন ।

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

[এখানে ব্যর্থতা বোঝায় যে আউট-অফ-ব্যান্ডের তথ্য হাইপারটেক্সটের পরিবর্তে ইন্টারঅ্যাকশন চালাচ্ছে]]


অন্যদের মতো স্বাগত হিসাবে প্রশ্নের উত্তর দেয় না, তবে প্রাসঙ্গিক তথ্যের জন্য +1!
কেজিসিবিএক্স

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

11

আরআরইএসটি একটি স্থাপত্য শৈলী যা ওয়েব-স্ট্যান্ডার্ড এবং এইচটিটিপি প্রোটোকল (2000 সালে প্রবর্তিত) এর উপর ভিত্তি করে।

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

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

প্রতিটি সংস্থান HTTP সাধারণ অপারেশন সমর্থন করা উচিত। সংস্থানগুলি বিশ্বব্যাপী আইডি দ্বারা চিহ্নিত করা হয় (যা সাধারণত ইউআরআই হয়)।

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

এইচটিটিপি পদ্ধতি:

পিইউটি, জিইটি, পোষ্ট এবং ডিলিট পদ্ধতিগুলি রিস্টের ভিত্তিক আর্কিটেকচারগুলিতে সাধারণত ব্যবহৃত হয়। নিম্নলিখিত ক্রমটি এই ক্রিয়াকলাপগুলির একটি ব্যাখ্যা দেয় gives

  • জিইটি পার্শ্ব-প্রতিক্রিয়া ছাড়াই সংস্থার একটি পঠন অ্যাক্সেসের সংজ্ঞা দেয়। জিইটি অনুরোধের মাধ্যমে রিসোর্সটি কখনই পরিবর্তন করা হয় না, যেমন, অনুরোধটির কোনও পার্শ্ব প্রতিক্রিয়া নেই (আদর্শশক্তি) ot
  • পুট একটি নতুন সংস্থান তৈরি করে। এটি অবশ্যই আদর্শবান হতে হবে।
  • মুছে ফেলা সম্পদগুলি সরান। অপারেশন আদর্শবান। তারা বিভিন্ন ফলাফল না নিয়ে পুনরাবৃত্তি করতে পারে।
  • POST একটি বিদ্যমান সংস্থান আপডেট করে বা একটি নতুন সংস্থান তৈরি করে।

বেশ কয়েকটি উদ্ধৃতি, তবে একটি সূত্রের উল্লেখ নেই। আপনি এটি কোথায় পেলেন?
ডিজেভিজি

10

আরআরইএসটি বলতে প্রতিনিধিত্বমূলক রাষ্ট্রের স্থানান্তর বোঝায় ।

এটি স্টেটহীন, ক্লায়েন্ট-সার্ভার, ক্যাশেযোগ্য যোগাযোগ প্রোটোকলের উপর নির্ভর করে - এবং কার্যত সমস্ত ক্ষেত্রে, এইচটিটিপি প্রোটোকল ব্যবহৃত হয়।

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

বিশ্রাম সম্পর্কে পরিচয়


10

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


10

প্রতি সেউতে "RESTful প্রোগ্রামিং" এর মত ধারণা নেই। এটি আরও ভাল বলা হবে RESTful দৃষ্টান্ত বা এমনকি আরও ভাল RESTful আর্কিটেকচার। এটি কোনও প্রোগ্রামিং ভাষা নয়। এটি একটি দৃষ্টান্ত।

উইকিপিডিয়া থেকে :

কম্পিউটিংয়ে, প্রতিনিধিত্বমূলক রাষ্ট্রের স্থানান্তর (আরইএসটি) হ'ল ওয়েব বিকাশের জন্য ব্যবহৃত একটি স্থাপত্য শৈলী।


9

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

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

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


5
"বিশ্রামটি কেবল একটি সিনট্যাকটিক পরিবর্তন ... এটি দেখে মনে হচ্ছে এটির কোনও লাভ নেই এবং এটি খাঁটি প্রসাধনী" --- ঠিক এই কারণেই আমি এখানে উত্তরগুলি পড়ছি। নোট করুন যে আপনি ব্যাখ্যা করেন নি, কেন বিশ্রাম নিখুঁতভাবে প্রসাধনী নয়।
osa

5

কি এপিআই টেস্টিং ?

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

REST এপিআই

বিশ্রাম: প্রতিনিধিত্বমূলক রাষ্ট্র স্থানান্তর।

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

4 সাধারণভাবে ব্যবহৃত এপিআই পদ্ধতি: -

  1. জিইটি: - এটি কোনও সংস্থানতে কেবল পঠনের অ্যাক্সেস সরবরাহ করে।
  2. পোস্ট: - এটি নতুন সংস্থান তৈরি বা আপডেট করতে ব্যবহৃত হয়।
  3. পুট: - এটি কোনও বিদ্যমান উত্স আপডেট বা প্রতিস্থাপন করতে বা একটি নতুন সংস্থান তৈরি করতে ব্যবহৃত হয়।
  4. মুছে ফেলুন: - এটি কোনও সংস্থান সরানোর জন্য ব্যবহৃত হয়।

ম্যানুয়ালি এপিআই পরীক্ষার পদক্ষেপ: -

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

  1. পোস্টম্যান (ক্রোম) / রিস্ট (ফায়ারফক্স) প্লাগইন ইনস্টল করুন
  2. API URL লিখুন
  3. REST পদ্ধতিটি নির্বাচন করুন
  4. সামগ্রী-শিরোনাম নির্বাচন করুন
  5. অনুরোধ JSON (পোস্ট) প্রবেশ করুন
  6. পাঠাতে ক্লিক করুন
  7. এটি আউটপুট প্রতিক্রিয়া ফিরিয়ে দেবে

REST API কে স্বয়ংক্রিয় করার পদক্ষেপ


5
এটি এমনকি একটি সঠিক উত্তর নয়
alp:

5

এটি সর্বত্র খুব কম উল্লেখ করা হয়েছে তবে রিচার্ডসনের পরিপক্কতা মডেল হ'ল বাস্তবে কতটা নিরাপদ তার এপিআই বিচার করার অন্যতম সেরা পদ্ধতি। এটি সম্পর্কে এখানে আরও:

রিচার্ডসনের পরিপক্কতা মডেল


ফিল্ডিংকে আরআরএসটিতে লাগানো প্রতিবন্ধকতাগুলি যদি আপনি লক্ষ্য করেন তবে আপনি স্পষ্ট দেখতে পাবেন যে কোনও এআইপিআরকে আরএসএম এর লেয়ার 3 এ পৌঁছে দেওয়া দরকার RESTful হিসাবে দেখার জন্য, যদিও এটি কেবলমাত্র যথেষ্ট নয় কারণ ব্যর্থ হওয়ার যথেষ্ট সম্ভাবনা এখনও রয়েছে REST ধারণা - সার্ভার API গুলি থেকে ক্লায়েন্টদের ডিকোপলিং। অবশ্যই, স্তর 3 হেটোয়াসের সীমাবদ্ধতা পূরণ করে তবে প্রয়োজনীয়তাগুলি ভঙ্গ করা এবং ক্লায়েন্টদের
জোড়

2

আমি বলব যে REST বোঝার জন্য একটি গুরুত্বপূর্ণ বিল্ডিং ব্লকটি এন্ডপয়েন্টস বা ম্যাপিংগুলিতে রয়েছে, যেমন /customers/{id}/balance

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

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