මම REST ඉගෙන ගත් අතර එය CRUD මෙන් දැනේ (මම CRUD ගැන කියවා ඇති දෙයින්).
ඔවුන් වෙනස් බව මම දනිමි, ඒවා සමාන යැයි සිතීම මට ඒවා නොතේරෙනවාදැයි මම කල්පනා කරමි.
REST යනු CRUD හි “සුපර්සෙට්” එකක්ද? CRUD සහ තවත් බොහෝ දේ එය කරයිද?
මම REST ඉගෙන ගත් අතර එය CRUD මෙන් දැනේ (මම CRUD ගැන කියවා ඇති දෙයින්).
ඔවුන් වෙනස් බව මම දනිමි, ඒවා සමාන යැයි සිතීම මට ඒවා නොතේරෙනවාදැයි මම කල්පනා කරමි.
REST යනු CRUD හි “සුපර්සෙට්” එකක්ද? CRUD සහ තවත් බොහෝ දේ එය කරයිද?
Answers:
පුදුමයට කරුණක් නම්, REST සහ CRUD අතර සැබෑ වෙනස ලෙස මා සලකන දේ අනෙක් පිළිතුරු වලින් මා දකින්නේ නැත: එක් එක් කළමනාකරණය කරන දේ.
CRUD යනු දත්ත ගබඩාවක කළ යුතු මූලික මෙහෙයුම් ය. ඔබ කෙලින්ම වාර්තා හෝ දත්ත වස්තු හසුරුවයි; මෙම මෙහෙයුම් හැරුණු විට, වාර්තා නිෂ්ක්රීය ආයතන වේ. සාමාන්යයෙන් එය දත්ත සමුදා වගු සහ වාර්තා පමණි.
REST, අනෙක් අතට, URL මගින් හඳුනාගත් සම්පත් නිරූපණයන් මත ක්රියාත්මක වේ. මේවා සාමාන්යයෙන් දත්ත වස්තු නොව සංකීර්ණ වස්තු වියුක්තයන් ය.
උදාහරණයක් ලෙස, සම්පතක් පරිශීලකයාගේ අදහස් දැක්වීමක් විය හැකිය. එයින් අදහස් කරන්නේ 'විවරණ' වගුවක වාර්තාවක් පමණක් නොව, 'පරිශීලක' සම්පත සමඟ ඇති සම්බන්ධතා, අදහස් දැක්වීමට අමුණා ඇති තනතුර, සමහර විට එය ප්රතිචාර දක්වන තවත් අදහස් දැක්වීමකි.
අදහස් දැක්වීම මත ක්රියාත්මක වීම ප්රාථමික දත්ත සමුදා මෙහෙයුමක් නොවේ, එය මුල් පෝස්ටරයට අනතුරු ඇඟවීමක් කිරීම හෝ ක්රීඩාවට සමාන 'ලකුණු' නැවත ගණනය කිරීම හෝ සමහර 'අනුගාමික ප්රවාහය' යාවත්කාලීන කිරීම වැනි සැලකිය යුතු අතුරු ආබාධ ඇති කළ හැකිය.
සම්පත් නිරූපණයට හයිපර් ටෙක්ස්ට් ( HATEOAS මූලධර්මය පරීක්ෂා කරන්න ) ඇතුළත් වේ , නිර්මාණකරුට සම්පත් අතර සබඳතා ප්රකාශ කිරීමට ඉඩ දීම හෝ මෙහෙයුම් කාර්ය ප්රවාහයේ REST සේවාදායකයාට මග පෙන්වීම.
කෙටියෙන් කිවහොත්, CRUD යනු ප්රාථමික මෙහෙයුම් (බොහෝ දුරට දත්ත සමුදායන් සහ ස්ථිතික දත්ත ගබඩා සඳහා) වන අතර REST යනු ඉතා ඉහළ මට්ටමේ API ශෛලියකි (බොහෝ විට වෙබ් සේවා සහ වෙනත් 'සජීවී' පද්ධති සඳහා).
පළමුවැන්න මූලික දත්ත හසුරුවයි, අනෙක සංකීර්ණ පද්ධතියක් සමඟ අන්තර් ක්රියා කරයි.
පළමුවෙන්ම, දෙකම හුදෙක් පොදු මුලකුරු ය; ඔවුන් බිය වීමට කිසිවක් නැත.
දැන්, CRUD යනු කෙටි යෙදුම් වලින් කෙටියෙන් දක්වා ඇති අතර එය බොහෝ යෙදුම්වල පොදු ලක්ෂණයක් වන අතර CRUD යැයි පැවසීම පහසුය . දත්ත (හෝ සම්පතක්) මත ඔබට කළ හැකි මූලික මෙහෙයුම් 4 එය විස්තර කරයි. සාදන්න, කියවන්න, යාවත්කාලීන කරන්න, මකන්න.
කෙසේ වෙතත්, REST යනු නම් කරන ලද පුහුණුවකි (AJAX මෙන්), එය තාක්ෂණය නොවේ. දිගු කලක් තිස්සේ HTTP ප්රොටෝකෝලය තුළ ආවේනික වූ නමුත් කලාතුරකින් භාවිතා වන හැකියාවන් භාවිතා කිරීමට එය දිරිගන්වයි.
ඔබට URL එකක් (ඒකාකාර සම්පත් ලොකේටර් ) ඇති විට සහ ලිපින රේඛාව මඟින් ඔබේ බ්රව්සරය එයට යොමු කළ විට, ඔබ HTTP ඉල්ලීමක් යවයි . සෑම HTTP ඉල්ලීමකම ඉල්ලීම නිකුත් කළ සේවාදායකයා වෙත ආපසු යැවිය යුත්තේ කුමන HTTP ප්රතිචාරය දැයි දැන ගැනීමට සේවාදායකයාට භාවිතා කළ හැකි තොරතුරු අඩංගු වේ .
සෑම ඉල්ලීමකම URL එකක් අඩංගු වේ, එබැවින් ඔබට ප්රවේශ වීමට අවශ්ය සම්පත් මොනවාදැයි සේවාදායකයා දනී , නමුත් එයට ක්රමයක් ද අඩංගු විය හැකිය . ක්රමයක් මගින් එම සම්පත සමඟ කළ යුතු දේ විස්තර කෙරේ .
නමුත් මෙම "ක්රමය" සංකල්පය බොහෝ විට භාවිතා නොවීය.
සාමාන්යයෙන්, මිනිසුන් GET ක්රමය හරහා පිටු වලට සම්බන්ධ වන අතර POST ක්රමය හරහා ඕනෑම ආකාරයක යාවත්කාලීන කිරීම් (මකාදැමීම්, ඇතුළත් කිරීම්, යාවත්කාලීන කිරීම්) නිකුත් කරනු ඇත.
එම නිසා ඔබට එක් සම්පතක් (URL) සත්ය සම්පතක් ලෙස සැලකිය නොහැක . එකම සම්පත මකා දැමීම, ඇතුළත් කිරීම හෝ යාවත්කාලීන කිරීම සඳහා ඔබට වෙනම URL තිබිය යුතුය. උදාහරණයක් වශයෙන්:
http://...com/posts/create- POST request -> Goes to posts.create() method in the server
http://...com/posts/1/show- GET request -> Goes to posts.show(1) method in the server
http://...com/posts/1/delete - POST request -> Goes to posts.delete(1) method in the server
http://...com/posts/1/edit- POST request -> Goes to posts.edit(1) method in the server
REST සමඟ, ඔබ POST හැරුණු කොට වෙනත් HTTP ක්රම භාවිතා කරන නිසා වඩා හොඳ ආකෘති නිර්මාණය කරන අතර URLS පමණක් නොව ක්රම අතර වෙනස හඳුනා ගැනීමට ඔබේ සේවාදායකය ක්රමලේඛනය කරන්න . උදාහරණයක් ලෙස:
http://...com/posts - POST request -> Goes to posts.create() method in the server
http://...com/posts/1 - GET request -> Goes to posts.show(1) method in the server
http://...com/posts/1 - DELETE request -> Goes to posts.delete(1) method in the server
http://...com/posts/1 - PUT request -> Goes to posts.edit(1) method in the server
මතක තබා ගන්න, එක් URL එක තනි සම්පතක් විස්තර කරයි. තනි තනතුරක් යනු තනි සම්පතකි. REST සමඟ ඔබ සම්පත් සලකනු ලැබීමට අදහස් කළ ආකාරයටම සලකයි. ඔබ සේවාදායකයාට පවසන්නේ ඔබට හැසිරවිය යුතු සම්පත කුමක්ද සහ එය හැසිරවිය යුතු ආකාරයයි.
"RESTful ගෘහ නිර්මාණ ශිල්පය" සඳහා තවත් බොහෝ අංග තිබේ, ඒවා ඔබට විකිපීඩියාව, වෙනත් ලිපි හෝ පොත් වලින් කියවිය හැකිය. CRUD සඳහා තවත් බොහෝ දේ නැත, අනෙක් අතට.
REST යනු “නියෝජන රාජ්ය හුවමාරුව” යන්නයි, එයින් අදහස් කරන්නේ පද්ධතියක යම් සම්පතක තත්වය සන්නිවේදනය කිරීම හා වෙනස් කිරීම ය.
REST සෑහෙන දුරට සම්බන්ධ වේ, මන්ද REST පිටුපස ඇති න්යාය දුරස්ථ පද්ධතියක තොරතුරු කළමනාකරණය කිරීම සඳහා මාධ්ය, හයිපර්මීඩියා සහ යටින් පවතින ප්රොටෝකෝලයකි.
CRUD, අනෙක් අතට, දත්ත සමුදායක දත්ත සඳහා ඔබට අවශ්ය පොදු මෙහෙයුම් සඳහා සිහිවටන වේ: නැවත ලබා ගැනීම යාවත්කාලීන මකන්න. නමුත් එය ඇත්ත වශයෙන්ම ඊට වඩා ගැඹුරක් ලබා ගන්නේ නැත.
ඉතින් ඔබේ ප්රශ්නයට පිළිතුර එයයි, නමුත් REST සහ CRUD එකට සාකච්ඡා කරන විට මා දකින පොදු වැරැද්ද ගැන සඳහන් කරමි. බොහෝ සංවර්ධකයින්ට REST කෙලින්ම CRUD වෙත සිතියම් ගත කිරීමට අවශ්යය, මන්ද HTTP හරහා REST GET PUT POST සහ DELETE සඳහා සපයන අතර CRUD මඟින් CREATE RETRIEVE UPDATE DELETE නිර්මාණය කරයි. REST ක්රියා පද කෙලින්ම CRUD මෙහෙයුම් වලට සිතියම් ගත කිරීම ස්වාභාවිකය.
කෙසේ වෙතත්, HTTP විසින් "සාදන්න හෝ යාවත්කාලීන කරන්න" ශෛලියක් භාවිතා කරන අතර CRUD නිර්මාණය සහ යාවත්කාලීන කිරීම වෙන් කරයි. එමඟින් (!) දෙක අතර පිරිසිදු, සාමාන්ය සිතියම් ගත කිරීම කළ නොහැක (!)
GET සහ DELETE පහසුය ... GET === RETRIEVE, සහ DELETE === DELETE.
නමුත් HTTP පිරිවිතරයට අනුව, PUT යනු සැබවින්ම නිර්මාණය සහ යාවත්කාලීන කිරීම වේ:
PUT භාවිතා කර එහි අනන්යතාවය ඇතුළුව ඔබ ඒ ගැන සියල්ල දන්නා විට නවතම වස්තුවක් නිර්මාණය කරන්න
වස්තුවක් යාවත්කාලීන කිරීමට PUT භාවිතා කරන්න (සාමාන්යයෙන් වස්තුවේ සම්පූර්ණ නිරූපණය සමඟ)
POST යනු "සැකසුම්" ක්රියා පදය වන අතර එය "උපග්රන්ථ" ක්රියා පදය ලෙස සැලකේ:
එකතුවකට නව වස්තුවක් එකතු කිරීමට POST භාවිතා කරන්න - එනම් නව වස්තුවක් සාදන්න
HTTP පිරිවිතර එය "දත්ත සැකසුම්" ක්රියා පදය ලෙස අර්ථ දක්වන බැවින් අනෙක් ක්රියාපද කිසිවක් නොගැලපෙන විට POST ද භාවිතා වේ.
ඔබගේ කණ්ඩායම POST හි රැඳී සිටින්නේ නම්, මුළු WWW ගොඩනගා ඇත්තේ GET සහ POST මත බව මතක තබා ගන්න;)
එබැවින් REST සහ CRUD අතර සමානකමක් ඇති අතර, බොහෝ කණ්ඩායම් කරන වැරැද්ද නම් දෙක අතර සමානතාවයක් ඇති කිරීමයි. RUD API එකක් නිර්වචනය කිරීමේදී කණ්ඩායමක් සැබවින්ම සැලකිලිමත් විය යුත්තේ CRUD මතකයේ රැඳී නොසිටීම සඳහා ය.
CRUD මඟින් දත්ත කියවීම සහ ලිවීම සඳහා අවම ගබඩා ක්රියාපද මාලාවක් නියම කරයි: නිර්මාණය කිරීම, කියවීම, යාවත්කාලීන කිරීම සහ මකා දැමීම. එවිට, මේවා එකතු කිරීමෙන් ඔබට වෙනත් මෙහෙයුම් ගොඩනගා ගත හැකිය. මේවා සාමාන්යයෙන් දත්ත සමුදා මෙහෙයුම් ලෙස සලකනු ලැබේ, නමුත් දත්ත සමුදායක් ලෙස සලකනු ලබන්නේ අත්තනෝමතික ය (උදා: සාපේක්ෂ ඩීබීඑම්එස් විය හැකි නමුත් YAML ගොනු ද විය හැකිය).
REST යනු “වාස්තු විද්යාත්මක ශෛලියක්” වන අතර එය සාමාන්යයෙන් CRUD මෙහෙයුම් සහ වෙනත්, ඉහළ මට්ටමේ මෙහෙයුම් ඇතුළත් වේ. REST හි සිත්ගන්නාසුලු සීමාවන් රාශියක් ඇත (විශේෂයෙන් HTTP සමඟ හොඳින් යුගලනය වී ඇත).
REST අතුරුමුහුණතකට කිසියම් සම්පතක් මත ඇති සියලුම CRUD මෙහෙයුම් නිරාවරණය කළ හැකි නමුත් අවශ්ය නොවේ. REST අතුරුමුහුණතක ඇති දේ අත්තනෝමතික වන අතර පද්ධති අවසරයන්, UI සලකා බැලීම් සහ අතුරු මුහුණත නිර්මාණය කර නිර්මාණය කළ දිනයේ එය කෙතරම් උණුසුම්ද යන්න නිසා වෙනස් විය හැකිය. උණුසුම් දින වඩාත් අවම අතුරුමුහුණත් වලට තුඩු දෙයි, සාමාන්යයෙන් ප්රතිවිරුද්ධ දෙය සත්ය විය හැකිය.
CRUD
REST
REST යන්නෙන් නියෝජනය වන්නේ රාජ්ය මාරුවයි (සමහර විට එය "ReST" ලෙස අක්ෂර වින්යාසය)
එය අස්ථායි, සේවාදායක-සේවාදායක, හැඹිලි කළ හැකි සන්නිවේදන ප්රොටෝකෝලයක් මත රඳා පවතී - සහ සෑම අවස්ථාවකම පාහේ HTTP ප්රොටෝකෝලය භාවිතා වේ
REST යනු ජාලගත යෙදුම් සැලසුම් කිරීම සඳහා ගෘහ නිර්මාණ ශෛලියකි
REST යනු යන්ත්ර සඳහා වෙබ් පිටුවක් වැනි ය, ඒවා පිරික්සීමට හැකි අතර CRUD යනු SOAP වැනි දෙයක් වන අතර එය සිය සේවාදායකයින් සමඟ දැඩි ලෙස සම්බන්ධ වේ. මේවා ප්රධාන වෙනස්කම් වේ. Ofc. ඒවා මතුපිටට සමාන ය, නමුත් CRUD මූලික වස්තු හැසිරවීම විස්තර කරන අතර REST හට ඕනෑම යෙදුමක අතුරු මුහුණත විස්තර කළ හැකිය. REST ට තවත් HTTP ක්රම 4 ක් භාවිතා කළ හැකි තවත් වෙනසක්. මට සියලු වෙනස්කම් එකතු කිරීමට අවශ්ය නම් එය ඉතා දිගු පිළිතුරක් වනු ඇත, ඔබ REST vs SOAP පිළිබඳ ප්රශ්න පරීක්ෂා කළහොත් ඔබට ඒවායින් බොහොමයක් සොයාගත හැකිය.
CRUD සමඟ REST පටලවා ගැනීම ඉතා පොදු වැරැද්දක් යැයි මම සිතමි. හේතුව REST ගැන ගැඹුරින් කියවීමට සංවර්ධකයින්ට කාලය නොමැති වීමයි. ඔවුන්ට අවශ්ය වන්නේ තාක්ෂණය භාවිතා කිරීම - එය තේරුම් නොගෙන - සමාන සංවර්ධකයින් විසින් ලියන ලද සීමිත CRUD විලාසිතාවේ උදාහරණ මත පදනම්ව. උදාහරණ හා නිබන්ධන වලින් අතිමහත් බහුතරයක් පිළිබිඹු කරන්නේ බරපතල දැනුමක් නොමැතිකමයි. මෙම ආයතනවල CRUD මෙහෙයුම් සඳහා REST සම්පත් හා HTTP ක්රම සිතියම්ගත කිරීම සහ අධි-සබැඳි නොමැතිව REST භාවිතා කිරීම එහි රෝග ලක්ෂණයකි. REST මඟින් ඔබ ඔබගේ ක්රියාකාරකම් සඳහා අධි සබැඳි (POST / PUT / DELETE / PATCH ක්රම සමඟ සබැඳි ඇතුළුව) සිතියම් ගත කරන අතර (සාමාන්යයෙන් API විශේෂිත) සම්බන්ධක සම්බන්ධතාවය පරීක්ෂා කිරීමෙන් ඔබ සේවාදායකයාගේ පැත්තේ ක්රියාකාරිත්වය හඳුනා ගනී. REST සේවාදායකයෙක් සම්බන්ධක සම්බන්ධතාවයක් යනු කුමක්දැයි නොදන්නේ නම් සහ HTTP ක්රම සහ සමහර URI සැකිලි පමණක් දන්නේ නම්, එවිට එය REST සේවාදායකයකු නොව HTTP සේවාදායකයේ CRUD වේ. REST සේවාදායකයකුගේ තවත් පොදු වැරැද්දක් වන්නේ බ්රව්සරයේ ක්රියාත්මක වන තනි පිටු ජාවාස්ක්රිප්ට් යෙදුමකි. ඇත්ත වශයෙන්ම ඔබට එවැනි සේවාදායකයකු ක්රියාත්මක කළ හැකිය, නමුත් REST යන්නෙන් අදහස් කළේ ස්වයංක්රීය සේවාදායකයින් සඳහාය (ඔබ නොදන්නා සංවර්ධකයින් විසින් ලියන ලද සේවාදායක පාර්ශවීය යෙදුම්) මිස අතින් සේවාදායකයින් සඳහා නොවේ (ඔබ විසින් ලියන ලද පරිශීලක පාලිත බ්රව්සර් යෙදුම්). තනි බ්රව්සර් සේවාදායකයකු පමණක් සිටීම ඔබට සැබවින්ම REST අවශ්ය නොවන බවට ලකුණක් විය හැකි අතර ඔබ ව්යාපෘතිය ඉක්මවා ගොස් ඇත. මෙම අවස්ථා වලදී CRUD API යනු ශක්ය විසඳුමක් වන අතර සංවර්ධකයින් මෙම CRUD APIs REST ලෙස හඳුන්වන්නේ ඔවුන් වෙනස නොදන්නා බැවිනි. ඇත්ත වශයෙන්ම ඔබට එවැනි සේවාදායකයකු ක්රියාත්මක කළ හැකිය, නමුත් REST යන්නෙන් අදහස් කළේ ස්වයංක්රීය සේවාදායකයින් සඳහාය (ඔබ නොදන්නා සංවර්ධකයින් විසින් ලියන ලද සේවාදායක පාර්ශවීය යෙදුම්) මිස අතින් සේවාදායකයින් සඳහා නොවේ (ඔබ විසින් ලියන ලද පරිශීලක පාලිත බ්රව්සර් යෙදුම්). තනි බ්රව්සර් සේවාදායකයකු පමණක් සිටීම ඔබට සැබවින්ම REST අවශ්ය නොවන බවට ලකුණක් විය හැකි අතර ඔබ ව්යාපෘතිය ඉක්මවා ගොස් ඇත. මෙම අවස්ථා වලදී CRUD API යනු ශක්ය විසඳුමක් වන අතර සංවර්ධකයින් මෙම CRUD APIs REST ලෙස හඳුන්වන්නේ ඔවුන් වෙනස නොදන්නා බැවිනි. ඇත්ත වශයෙන්ම ඔබට එවැනි සේවාදායකයකු ක්රියාත්මක කළ හැකිය, නමුත් REST යන්නෙන් අදහස් කළේ ස්වයංක්රීය සේවාදායකයින් සඳහාය (ඔබ නොදන්නා සංවර්ධකයින් විසින් ලියන ලද සේවාදායක පාර්ශවීය යෙදුම්) මිස අතින් සේවාදායකයින් සඳහා නොවේ (ඔබ විසින් ලියන ලද පරිශීලක පාලිත බ්රව්සර් යෙදුම්). තනි බ්රව්සර් සේවාදායකයකු පමණක් සිටීම ඔබට සැබවින්ම REST අවශ්ය නොවන බවට ලකුණක් විය හැකි අතර ඔබ ව්යාපෘතිය ඉක්මවා ගොස් ඇත. මෙම අවස්ථා වලදී CRUD API යනු ශක්ය විසඳුමක් වන අතර සංවර්ධකයින් මෙම CRUD APIs REST ලෙස හඳුන්වන්නේ ඔවුන් වෙනස නොදන්නා බැවිනි.