API අනුවාදය සඳහා හොඳම භාවිතයන්? [වසා ඇත]


877

වෙබ් සේවා REST API අනුවාදය සඳහා දන්නා ආකාරය හෝ හොඳම භාවිතයන් තිබේද?

අවසාන ලක්ෂ්‍යයේ URL මඟින් AWS අනුවාදයක් කරන බව මම දැක ඇත්තෙමි . එකම මාර්ගය මෙයද? නැතහොත් එකම ඉලක්කය සපුරා ගැනීමට වෙනත් ක්‍රම තිබේද? විවිධ ක්‍රම තිබේ නම්, එක් එක් ක්‍රමයේ ඇති සුදුසුකම් මොනවාද?

Answers:


682

මෙය හොඳ සහ ව්‍යාකූල ප්‍රශ්නයකි. යූආර්අයි නිර්මාණයේ මාතෘකාව ඒ සමගම REST API එකක වඩාත්ම කැපී පෙනෙන කොටස වන අතර එම නිසා එම API භාවිතා කරන්නන් කෙරෙහි දිගු කාලීන කැපවීමක් තිබිය හැකිය .

යෙදුමක පරිණාමය සහ යම් දුරකට එහි ඒපීඅයි යනු ජීවිතයේ සත්‍යයක් වන අතර එය ක්‍රමලේඛන භාෂාවක් වැනි සංකීර්ණ නිෂ්පාදනයක් පරිණාමය වීමට සමාන වන බැවින් යූආර්අයි සැලසුමට අඩු ස්වාභාවික සීමාවන් තිබිය යුතු අතර එය සංරක්ෂණය කළ යුතුය කාලයත් සමඟ . යෙදුමේ සහ API වල ආයු කාලය වැඩි වන විට, යෙදුම සහ API භාවිතා කරන්නන් කෙරෙහි ඇති කැපවීම වැඩි වේ.

අනෙක් අතට, ජීවිතයේ තවත් කරුණක් නම්, ඒපීඅයි හරහා පරිභෝජනය කරනු ලබන සියලු සම්පත් සහ ඒවායේ අංගයන් පුරෝකථනය කිරීම දුෂ්කර ය. වාසනාවකට මෙන්, එළිදරව්ව තෙක් භාවිතා වන සමස්ත API නිර්මාණය කිරීම අවශ්‍ය නොවේ . සෑම සම්පත් හා සම්පත් අවස්ථාවකම සියලු සම්පත් අවසන් ලක්ෂ්‍ය සහ ආමන්ත්‍රණ යෝජනා ක්‍රමය නිවැරදිව නිර්වචනය කිරීම ප්‍රමාණවත් වේ.

කාලයාගේ ඇවෑමෙන් ඔබට එක් එක් විශේෂිත සම්පතට නව සම්පත් හා නව ගුණාංග එකතු කිරීමට අවශ්‍ය විය හැකිය, නමුත් සම්පත් ඇමතීමේ යෝජනා ක්‍රමයක් පොදු වූ පසු ඒපීඅයි භාවිතා කරන්නන් විශේෂිත සම්පත් වෙත ප්‍රවේශ වීමට අනුගමනය කරන ක්‍රමය වෙනස් නොවිය යුතුය.

මෙම ක්‍රමය HTTP ක්‍රියා පද අර්ථ නිරූපණයට (උදා: PUT සැමවිටම යාවත්කාලීන කළ යුතුය / ප්‍රතිස්ථාපනය කළ යුතුය) සහ පෙර API අනුවාද වල සහය දක්වන HTTP තත්ව කේත (ඒවා දිගටම ක්‍රියාත්මක විය යුතුය, එවිට මානව මැදිහත්වීමකින් තොරව වැඩ කළ API සේවාදායකයින්ට දිගටම වැඩ කිරීමට හැකි විය යුතුය. ඒ වගේ).

තවද, URI බවට API අනුවාදය කාවැද්දීම සංකල්පය කඩාකප්පල් වීමට පටන් අයදුම් රාජ්ය එන්ජිම ලෙස hypermedia සම්පතක් ලිපිනය / වේලාව වෙනස් කළ බව URI සහිත විසින් (රෝයි, ටී Fieldings ආචාර්ය උපාධිය ලබාගන්න සඳහන්), මම ඇති බව නිගමනය කළ හැකි API අනුවාදයන් සම්පත් යූආර්අයි වල දීර් time කාලයක් තබා නොගත යුතුය, එයින් අදහස් කරන්නේ ඒපීඅයි භාවිතා කරන්නන්ට රඳා පැවතිය හැකි සම්පත් යූආර්අයි පර්මැලින්ක් විය යුතු බවයි .

නිසැකවම, API අනුවාදය පාදක URI තුළට කාවැද්දිය හැකි නමුත් නව API අනුවාදය සමඟ වැඩ කරන API සේවාදායකයකු නිදොස් කිරීම වැනි සාධාරණ සහ සීමිත භාවිතයන් සඳහා පමණි . එවැනි සංස්කරණය කරන ලද ඒපීඅයි කාලය සීමිත විය යුතු අතර ඒපීඅයි භාවිතා කරන්නන්ගේ සීමිත කණ්ඩායම් වලට (සංවෘත බීටා වලදී මෙන්) ලබා ගත හැකිය. එසේ නොමැතිනම්, ඔබ නොකළ යුතු තැන ඔබම කැප වන්න.

ඒපීඅයි අනුවාදයන් කල් ඉකුත්වීමේ දිනයක් පවත්වා ගෙන යාම පිළිබඳ සිතුවිලි කිහිපයක්. වෙබ් සේවා ක්‍රියාත්මක කිරීම සඳහා බහුලව භාවිතා වන සියලුම ක්‍රමලේඛන වේදිකා / භාෂා (ජාවා, .නෙට්, පීඑච්පී, පර්ල්, රේල්ස්, ආදිය) වෙබ් සේවා අවසන් ලක්ෂ්‍ය (ය) මූලික යූආර්අයි වෙත පහසුවෙන් බැඳීමට ඉඩ දෙයි. මේ ආකාරයෙන් විවිධ API අනුවාද හරහා ගොනු / පන්ති / ක්‍රම එකතුවක් වෙන් කර තබා ගැනීම පහසුය .

ඒපීඅයි පරිශීලකයින් වන පීඕවී වෙතින්, මෙය පැහැදිලිව පෙනෙන නමුත් සීමිත කාලයක් සඳහා, එනම් සංවර්ධනයේදී පමණක් විශේෂිත API අනුවාදයක් සමඟ වැඩ කිරීම හා බැඳීම පහසුය.

API නඩත්තු කරන්නාගේ POV වෙතින්, ලිපිගොනු වල ප්‍රධාන වශයෙන් ක්‍රියා කරන ප්‍රභව පාලන පද්ධති භාවිතා කරමින් විවිධ API අනුවාදයන් සමාන්තරව පවත්වා ගැනීම පහසුය (ප්‍රභව කේත) අනුවාදයේ කුඩාම ඒකකය ලෙස.

කෙසේ වෙතත්, URI පැහැදිලිව දෘශ්යමාන API ප්රභේද වරනයක් තියෙනවා: සිට එක් ද මෙම ප්රවේශය විරුද්ධ විය API ඉතිහාසය URI නිර්මාණය දෘශ්යමාන / aparent බවට පත් හා ඒ නිසා කාලයත් වෙනස් කොන්කරනු විවේක මාර්ගෝපදේශ එරෙහි ක්රියාදාමයක. මම එකඟයි!

මෙම සාධාරණ විරෝධය මඟ හරවා ගත හැකි ක්‍රමය නම් අනුවාද රහිත API පදනම් URI යටතේ නවතම API අනුවාදය ක්‍රියාත්මක කිරීමයි. මෙම අවස්ථාවේදී, API සේවාදායක සංවර්ධකයින්ට මේ සඳහා තෝරා ගත හැකිය:

  • නවතම ඒවාට එරෙහිව සංවර්ධනය කරන්න (යෙදුම නරක ලෙස නිර්මාණය කරන ලද API සේවාදායකයා බිඳ දැමිය හැකි අවසාන API වෙනස්වීම් වලින් එය ආරක්ෂා කිරීමට යෙදුම කැප කිරීමට ).

  • API හි නිශ්චිත අනුවාදයකට බැඳ තබන්න (එය පැහැදිලිව පෙනේ) නමුත් සීමිත කාලයක් සඳහා පමණි

උදාහරණයක් ලෙස, API v3.0 නවතම API අනුවාදය නම්, පහත සඳහන් දෙක අන්වර්ථයන් විය යුතුය (එනම් සියලු API ඉල්ලීම් වලට සමාන ලෙස හැසිරෙන්න):

http: // shonzilla / api / customers / 1234 
http: // shonzilla / api /v3.0 / customers / 1234
http: // shonzilla / api / v3 / customers / 1234

ඊට අමතරව, පැරණි API වෙත යොමු කිරීමට තවමත් උත්සාහ කරන API සේවාදායකයින්ට ඔවුන් භාවිතා කරන API අනුවාදය යල් පැන ගියහොත් හෝ තවදුරටත් සහාය නොදක්වන්නේ නම් , නවතම පෙර API අනුවාදය භාවිතා කරන ලෙස දැනුම් දිය යුතුය . එබැවින් යල්පැනගිය යූආර්අයි වලට ප්‍රවේශ වීම:

http: // shonzilla / api /v2.2 / customers / 1234
http: // shonzilla / api /v2.0 / customers / 1234
http: // shonzilla / api / v2 / customers / 1234
http: // shonzilla / api /v1.1 / customers / 1234
http: // shonzilla / api / v1 / customers / 1234

එච්ටීටීපීLocation ශීර්ෂයට සමගාමීව භාවිතා වන යළි හරවා යැවීම පෙන්නුම් කරන 30x එච්ටීටීපී තත්ව කේත වලින් ඕනෑම එකක් ආපසු ලබා දිය යුතුය, එය සම්පත් යූආර්අයි හි සුදුසු අනුවාදයක් වෙත හරවා යවයි.

http: // shonzilla / api / customers / 1234

API අනුවාදකරණ අවස්ථා සඳහා සුදුසු අවම වශයෙන් යළි-යොමුවීම් HTTP තත්ව කේත දෙකක්වත් තිබේ:

  • 301 ස්ථිරවම පෙලඹුණු ඉල්ලා සිටියහ URI සමග සම්පත් තවත් URI (API අනුවාදය තොරතුරු අඩංගු නොවන බව සම්පතක් උදාහරණයක් කොමෙන්ටුවයි විය යුතුය) ස්ථිරවම ගෙන ඇති බව පෙන්නුම්. යල්පැනගිය / සහාය නොදක්වන API අනුවාදයක් දැක්වීමට මෙම තත්ව කේතය භාවිතා කළ හැකි අතර, සංස්කරණය කරන ලද සම්පත් යූආර්අයි වෙනුවට සම්පත් පර්මාලින්ක් මඟින් ආදේශ කර ඇති බව ඒපීඅයි සේවාදායකයාට දන්වයි .

  • 302 හමු ඉල්ලා URI තවමත් සහාය විය හැක අතර ඉල්ලා සම්පත් තාවකාලිකව, වෙනත් ස්ථානයක පිහිටා ඇත බව යි. අනුවාදයට වඩා අඩු යූආර්අයි තාවකාලිකව නොමැති විට මෙම තත්ව කේතය ප්‍රයෝජනවත් විය හැකි අතර නැවත හරවා යැවීමේ ලිපිනය භාවිතා කරමින් ඉල්ලීමක් නැවත නැවතත් කළ යුතුය (උදා: ඒපී අනුවාදය සහිත යූආර්අයි වෙත යොමු කිරීම) සහ අපට එය දිගටම භාවිතා කරන ලෙස සේවාදායකයින්ට පැවසීමට අවශ්‍යය (එනම් permalinks).

  • HTTP 1.1 පිරිවිතරයේ Redirection 3xx පරිච්ඡේදයේ වෙනත් අවස්ථා සොයාගත හැකිය


142
යටින් ක්‍රියාත්මක කිරීම වෙනස් වන විට URL හි අනුවාද අංකයක් භාවිතා කිරීම නරක ක්‍රියාවක් ලෙස නොසැලකිය යුතුය. "සේවාවක් සඳහා අතුරුමුහුණත පසුගාමී නොවන ආකාරයකට වෙනස් වන විට, යථාර්ථයේ දී මුළුමනින්ම නව සේවාවක් නිර්මාණය වී ඇත ... සේවාදායකයාගේ දෘෂ්ටි කෝණයෙන් බලන කල, සේවාවක් යනු අතුරු මුහුණතක් හා සමහර ක්‍රියාකාරී නොවන ගුණාංග නොවේ. සේවාවක් සඳහා අතුරුමුහුණත පසුපසට නොගැලපෙන ආකාරයකින් වෙනස් වුවහොත්, එය තවදුරටත් මුල් සේවාවේ අවස්ථාවක් නියෝජනය නොකරයි, නමුත් එය සම්පූර්ණයෙන්ම නව සේවාවක් වේ. ” ibm.com/developerworks/webservices/library/ws-version
benvolioT

7
අනුවාද අංකය සමඟ ශීර්ෂයක් එක් කිරීම පිළිබඳව ඔබට කිසියම් අදහසක් තිබේද, එවිට එය සේවාදායකයින්ට හෝ සංවර්ධකයින්ට පරීක්ෂා කළ හැකිය.
වෙබ් ක්ලිම්බර්

11
සේවාදායකයා අපේක්ෂා කරන අනුවාදය දැක්වීමට පිළිගැනීමේ ශීර්ෂයක් භාවිතා කිරීමද බලන්න: blog.steveklabnik.com/2011/07/03/…
වෙස්ටන් රූටර්

52
අවසාන කොටස සඳහා: යලි 410 Goneහරවා යවන ලද සහ තවදුරටත් සහාය නොදක්වන API නැවත පැමිණිය යුතු යැයි මම කියමි , යළි-යොමුවීමක් මඟින් නව ස්ථානය නොගැලපෙන විට අනුකූල වන බව පෙන්නුම් කරයි. API හුදෙක් යල්පැන ඇති නමුත් තවමත් පවතී නම්, Warningප්‍රතිචාරය පිළිබඳ HTTP ශීර්ෂයක් විකල්පයක් විය හැකිය.
මයිකල් ස්ටම්

22
දැනටමත් ෂොන්සිලා / ඒපී / ගනුදෙනුකරුවන් / 1234 වැනි ස්ථාවර URL භාවිතා කරන සේවාදායකයින් සමඟ ඔබ කටයුතු කරන්නේ කෙසේද සහ ඔබට නව අනුවාදයකට යාවත්කාලීන කිරීමට අවශ්‍යද? URL වෙත V2 (පැරණි එක) එක් කිරීමට ඔබට බල කරන්නේ කෙසේද?
ඩෙජෙල්

273

URL හි අනුවාද අඩංගු නොවිය යුතුය. ඔබ ඉල්ලන සම්පත පිළිබඳ "අදහස" සමඟ අනුවාදයට කිසිදු සම්බන්ධයක් නැත. යූආර්එල් ඔබ කැමති සංකල්පයට මගක් ලෙස සිතීමට උත්සාහ කළ යුතුය - අයිතමය නැවත ලබා ගැනීමට ඔබට අවශ්‍ය ආකාරය නොවේ. අනුවාදය මඟින් නියම කරනුයේ වස්තුව නියෝජනය කිරීම මිස වස්තුව පිළිබඳ සංකල්පය නොවේ. වෙනත් පෝස්ටර් පවසා ඇති පරිදි, ඔබ ඉල්ලීම් ශීර්ෂයේ ආකෘතිය (අනුවාදය ඇතුළුව) සඳහන් කළ යුතුය.

අනුවාදයන් ඇති URL සඳහා සම්පූර්ණ HTTP ඉල්ලීම දෙස බැලුවහොත්, එය මේ ආකාරයෙන් පෙනේ:

(BAD WAY TO DO IT):

http://company.com/api/v3.0/customer/123
====>
GET v3.0/customer/123 HTTP/1.1
Accept: application/xml

<====
HTTP/1.1 200 OK
Content-Type: application/xml
<customer version="3.0">
  <name>Neil Armstrong</name>
</customer>

ශීර්ෂයෙහි ඔබ ඉල්ලන නිරූපණය අඩංගු රේඛාව අඩංගු වේ ("පිළිගන්න: යෙදුම / xml"). අනුවාදය යා යුත්තේ එතැනිනි. ඔබට එකම දේ විවිධ හැඩතලවලින් අවශ්‍ය විය හැකි බවත් සේවාදායකයාට අවශ්‍ය දේ ඉල්ලීමට හැකි විය යුතු බවත් සෑම කෙනෙකුම පැහැදිලි කරයි. ඉහත උදාහරණයේ දී, සේවාදායකයා සම්පතෙහි ඕනෑම XML නිරූපණයක් ඉල්ලා සිටී - ඇත්ත වශයෙන්ම එයට අවශ්‍ය දේවල සැබෑ නිරූපණය නොවේ. එක්ස්එම්එල් පවතින තාක් කල්, සේවාදායකයාට ඉල්ලීමට සම්පූර්ණයෙන්ම සම්බන්ධ නැති දෙයක් ආපසු ලබා දිය හැකි අතර එය වැරදි බව වටහා ගැනීම සඳහා එය විග්‍රහ කළ යුතුය.

වඩා හොඳ ක්‍රමයක් නම්:

(GOOD WAY TO DO IT)

http://company.com/api/customer/123
===>
GET /customer/123 HTTP/1.1
Accept: application/vnd.company.myapp.customer-v3+xml

<===
HTTP/1.1 200 OK
Content-Type: application/vnd.company.myapp-v3+xml
<customer>
  <name>Neil Armstrong</name>
</customer>

තවද, සේවාදායකයින් සිතන්නේ එක්ස්එම්එල් ඉතා වාචික බවත් දැන් ඔවුන්ට ඒ වෙනුවට JSON අවශ්‍ය බවත් ය. අනෙක් උදාහරණ වලදී ඔබට එකම පාරිභෝගිකයා සඳහා නව URL එකක් තිබිය යුතුය, එබැවින් ඔබ අවසන් වන්නේ:

(BAD)
http://company.com/api/JSONv3.0/customers/123
  or
http://company.com/api/v3.0/customers/123?format="JSON"

(හෝ ඊට සමාන දෙයක්). ඇත්ත වශයෙන්ම, සෑම HTTP ඉල්ලීමකම ඔබ සොයන ආකෘතිය අඩංගු වේ:

(GOOD WAY TO DO IT)
===>
GET /customer/123 HTTP/1.1
Accept: application/vnd.company.myapp.customer-v3+json

<===
HTTP/1.1 200 OK
Content-Type: application/vnd.company.myapp-v3+json

{"customer":
  {"name":"Neil Armstrong"}
}

මෙම ක්‍රමය භාවිතා කරමින්, ඔබට නිර්මාණයේ වැඩි නිදහසක් ඇති අතර ඇත්ත වශයෙන්ම REST හි මුල් අදහසට අනුගත වේ. සේවාදායකයින්ට බාධා නොකර ඔබට අනුවාදයන් වෙනස් කළ හැකිය, නැතහොත් ඒපීඅයි වෙනස් වන විට සේවාදායකයින් වැඩි කරන්න. ඔබ නිරූපණයකට සහාය දැක්වීම නැවැත්වීමට තෝරා ගන්නේ නම්, ඔබට HTTP තත්ව කේතය හෝ අභිරුචි කේත සමඟ ඉල්ලීම් වලට ප්‍රතිචාර දැක්විය හැකිය. සේවාදායකයාට ප්‍රතිචාරය නිවැරදි ආකෘතියෙන් ඇති බව තහවුරු කර ගත හැකි අතර XML වලංගු කරන්න.

තවත් බොහෝ වාසි ඇති අතර ඒවායින් සමහරක් මගේ බ්ලොග් අඩවියේ සාකච්ඡා කරමි: http://thereisnorightway.blogspot.com/2011/02/versioning-and-types-in-resthttp-api.html

URL එකෙහි අනුවාදය දැමීම නරක යැයි පෙන්වීමට අවසාන උදාහරණයකි. ඔබට වස්තුව තුළ යම් තොරතුරක් අවශ්‍ය යැයි කියමු, ඔබ ඔබේ විවිධ වස්තූන් සංස්කරණය කර ඇත (ගනුදෙනුකරුවන් v3.0, ඇණවුම් v2.0, සහ ෂිප්ටෝ වස්තුව v4.2). සේවාදායකයා තුළ ඔබ සැපයිය යුතු නපුරු URL මෙන්න:

(Another reason why version in the URL sucks)
http://company.com/api/v3.0/customer/123/v2.0/orders/4321/

10
පිළිගැනීමේ ශීර්ෂය තුළ ස්වාධීන දත්ත කොන්ත්‍රාත් අනුවාදය සහ සේවා කොන්ත්‍රාත් අනුවාදයන් හැසිරවීම URL හි ඇති අවුල් සහගත තරමටම අවුල් සහගතය. වෙනත් විකල්ප තිබේද? මට බහුවිධ අන්ත ලක්ෂ්‍ය (සබන්, විවේක) තිබේ නම්, මෙයද පිළිගැනීම්වල සඳහන් කළ යුතු අතර, සේවාදායකයේ කෙළවරේ ඇති රවුටින් සේවාවට නිවැරදි අන්ත ලක්ෂ්‍යයට දිශාව තීරණය කිරීමට ඉඩ දිය යුතුද? නැතහොත් URL එකෙහි එන්ඩ්පොයින්ට් කේතනය කිරීම පිළිගත හැකිද?
ideafountain

117
මට මේ සමඟ එකඟ විය නොහැක, අවම වශයෙන් ඔබේ අවසාන හේතුව දක්වා. මෙය යූආර්අයි හි විවිධ කොටස්වල විවිධ අනුවාදයන් ඇති බව පෙනේ. නමුත් එය API අනුවාදයක කාරණය නොවේ. කාරණය වන්නේ ENTIRE සම්පත සඳහා එක් අනුවාදයක් තිබීමයි. ඔබ අනුවාදයන් වෙනස් කරන්නේ නම්, එය වෙනස් API සම්පතකි. ඒක බලන්න තේරුමක් නැත ඒකයි company.com/api/v3.0/customer/123/v2.0/orders/4321 නොව company.com/api/v3.0/customer/123/orders/4321 ඔබ සම්පතේ කිසිදු කොටසක් සංස්කරණය කරන්නේ නැත, ඔබ සම්පත සමස්තයක් ලෙස සංස්කරණය කරයි.
fool4jesus

90
ශීර්ෂ පා in යේ අර්ථකථන අංකය භාවිතා කිරීම වඩා හොඳ බව පෙනේ. නමුත් එය URL භාවිතා කිරීම වඩා ප්‍රායෝගිකයි: අඩු දෝෂ සහිත, හොඳම නිදොස්කරණය, සංවර්ධකයින් විසින් පහසුවෙන් දැකිය හැකි, විවේක පරීක්ෂණ සේවාදායකයින් තුළ පහසුවෙන් වෙනස් කළ හැකිය.
ඩැනියෙල් සෙරෙසෙඩෝ

7
මම හිතන්නේ BAD / GOOD over ප්‍රශ්නය සරල කරයි. API යන්නෙන් අදහස් කරන්නේ "යෙදුම් ක්‍රමලේඛ අතුරුමුහුණත" සහ අනුවාද අතුරුමුහුණත් ඉතා හොඳ අදහසක් බවයි. ඒපීඅයි ඇත්ත වශයෙන්ම සම්පත් සේවය කිරීම සඳහා පමණක් නොවේ. වෙන් කළ යුතු දෙය නම් සමහර අය අතුරුමුහුණත් ගැන කතා කරන අතර අනෙක් අය සම්පත් ගැන කතා කිරීමයි. ඔබ ජාල සිතියමෙහි ගූගල් සිතියම් api දෙස සමීපව බැලුවහොත්, ඒවා url හි api අනුවාද අංකය ඇතුළත් කර ඇති බව ඔබට පෙනෙනු ඇත. උදාහරණයක් ලෙස: සත්‍යාපනය අතරතුර map.google.com/maps/api/jsv2. Jsv2 යනු api අංකයයි.
ටොම් ග r නර්

6
@ ගිලි: ඇත්ත වශයෙන්ම, ඔබ -xඑය තවදුරටත් RFC6648 විසින් අවලංගු කර ඇති බැවින් භාවිතා නොකළ යුතුය .
ජොනතන් ඩබ්ලිව්

98

අනුවාදය URL එකට දැමීම ප්‍රායෝගික හා ප්‍රයෝජනවත් බව අපට පෙනී ගියේය. බැලූ බැල්මට ඔබ භාවිතා කරන දේ පැවසීම පහසු කරයි. පිළිගත් පිළිතුරෙන් ඇඟවෙන පරිදි, භාවිතයේ පහසුව, කෙටි / පිරිසිදු URL යනාදිය සඳහා අපි අන්වර්ථය / foo / / foo / (නවතම අනුවාදයන්) කරන්නෙමු.

පසුගාමී අනුකූලතාව සදහටම තබා ගැනීම බොහෝ විට පිරිවැය-තහනම් සහ / හෝ ඉතා අපහසු වේ. ක්ෂය කිරීම, මෙහි යෝජනා කර ඇති පරිදි යළි-යොමුවීම්, ලියකියවිලි සහ වෙනත් යාන්ත්‍රණයන් පිළිබඳ උසස් දැනුම් දීමක් කිරීමට අපි කැමැත්තෙමු.


5
පිළිගත් පිළිතුර නිවැරදි හා වඩාත්ම පිරිසිදු විය හැකිය. කෙසේ වෙතත්, API හි සංවර්ධකයාට සහ එදිනෙදා භාවිතා කරන්නන්ට මෙය නිසැකවම භාවිතා කිරීමට සහ සැකසීමට පහසුම වේ. වඩාත්ම ප්‍රායෝගික ප්‍රවේශය. වෙනත් ගූගල් සහ ඇමේසන් පෙන්වා දෙන පරිදි මෙම ප්‍රවේශය භාවිතා කරයි.
මුහම්මද් රෙහාන් සයීඩ්

46

සම්පත් නිරූපණය වඩා හොඳ ලෙස REST ප්‍රවේශය අනුගමනය කරන බව මම එකඟ වෙමි ... නමුත්, අභිරුචි MIME වර්ග (හෝ අනුවාද පරාමිතියක් එකතු කරන MIME වර්ග) සමඟ ඇති එක් විශාල ගැටළුවක් වන්නේ HTML හි පිළිගැනීම සහ අන්තර්ගත-වර්ග ශීර්ෂයන් වෙත ලිවීමට ඇති දුර්වල සහයෝගය සහ ජාවාස්ක්‍රිප්ට්.

උදාහරණයක් ලෙස, සම්පතක් නිර්මාණය කිරීම සඳහා පහත දැක්වෙන ශීර්ෂයන් සමඟ HTML5 ආකෘති පත්ර සමඟ IMO POST කළ නොහැක:

Accept: application/vnd.company.myapp-v3+json
Content-Type: application/vnd.company.myapp-v3+json 

මෙම HTML5 නිසා මේ enctypeගති ලක්ෂණය සුපුරුදු හැර වෙනත් කිසිම දෙයක්, ක ගණනය වේ එම නිසා application/x-www-formurlencoded, multipart/form-dataසහ text/plainවලංගු නොවේ.

... එසේම HTML4 හි ඇති සියලුම බ්‍රව්සර් හරහා එය සහාය දක්වන බව මට විශ්වාස නැත (එයට වඩා ලිහිල් එන්සයිටේ ගුණාංගයක් ඇත, නමුත් MIME වර්ගය ඉදිරියට යැවූවාද යන්න බ්‍රව්සර් ක්‍රියාත්මක කිරීමේ ගැටලුවක් වනු ඇත)

මේ නිසා මට දැන් දැනෙන්නේ අනුවාදයට වඩාත් සුදුසු ක්‍රමය යූආර්අයි හරහා බවයි, නමුත් එය 'නිවැරදි' ක්‍රමය නොවන බව මම පිළිගනිමි.


14
ශීර්ෂ පා in වල අනුවාදය නිර්වචනය කර ඇති මාර්ගය උපකල්පනය කරමින්, කෙනෙකුට පැවසිය හැකිය, ස්වදේශික ආකෘති ඉදිරිපත් කිරීම භාවිතා කරන HTML ආකෘති සෑම විටම API හි නවතම අනුවාදය භාවිතා කරනු ඇති බැවින් ඒවා පිළිපැදීමට අවශ්‍ය නිශ්චිත අනුවාදය පසුකර නොයනු ඇත. කෙසේ වෙතත්, XHR ඉල්ලීම් ඇත්ත වශයෙන්ම ඔබට පිළිගැනීම් වෙනස් කිරීමට සහ අන්තර්ගත ආකාරයේ ශීර්ෂයන් කියවීමට ඉඩ දෙයි. එබැවින් මූලික ආකෘති ඇත්ත වශයෙන්ම එකම ගැටළුවයි.
කයිල් හේස්

යූආර්අයි වඩාත් සුදුසු යැයි මම එකඟ වන බව මට විශ්වාස නැත, නමුත් අන්තර්ගත-වර්ගය ආකෘති සමඟ ක්‍රියා නොකිරීම ඇත්ත වශයෙන්ම ඉතා වැදගත් වේ.
wprl

2
Yle කයිල්, මම කොතැනක හෝ බ්ලොග් අඩවියක් දුටුවෙමි, ඔබ ඉල්ලීම් ශීර්ෂයේ අනුවාදයක් නිශ්චිතව දක්වා නොමැති නම්, පළමු api අනුවාදය සමඟ නැවත පැමිණීම වඩාත් සුදුසු වන්නේ හොඳම අනුකූලතාව සඳහා නවතම එකක් නොවේ.
ඇන්ඩි

ඒක ඇත්තටම මට දැන් ගොඩක් තේරුමක්.
කයිල් හේස්

Ile කයිල්හෙයිස් අයිෆ්‍රේම්, වීඩියෝ / කාවැද්දූ සහ වෙනත් "src / href" වර්ගයේ ටැග් අමතක නොකරන්න.
pllee

21

ඔබේ අනුවාදය URI තුළ තබන්න. ඒපීඅයි හි එක් අනුවාදයක් සෑම විටම තවත් වර්ගයකින් සහය නොදක්වයි, එබැවින් සම්පත් හුදෙක් එක් අනුවාදයකින් තවත් අනුවාදයකට සංක්‍රමණය වේ යන තර්කය සරල වැරදිය. එය XML සිට JSON වෙත ආකෘතිය මාරු කිරීම හා සමාන නොවේ. වර්ග නොපවතිනු ඇත, නැතහොත් ඒවා අර්ථාන්විතව වෙනස් වී ඇත.

අනුවාදයන් සම්පත් ලිපිනයේ කොටසකි. ඔබ එක් ඒපීඅයි සිට තවත් ඒපීඅයි වෙත ගමන් කරයි. ශීර්ෂකය තුළ ලිපින සැඟවීම RESTful නොවේ.


13

REST API එකක ඔබට අනුවාදකරණය කළ හැකි ස්ථාන කිහිපයක් තිබේ:

  1. සඳහන් කළ පරිදි, යූආර්අයි හි. යළි-යොමුවීම් සහ ඒ හා සමාන දෑ හොඳින් භාවිතා කරන්නේ නම් මෙය පත්‍රිකා ගත හැකි අතර සෞන්දර්යාත්මක විය හැකිය.

  2. පිළිගැනීම්: ශීර්ෂකය, එබැවින් අනුවාදය ගොනු වර්ගයෙහි ඇත. 'Mp3' vs 'mp4' වගේ. මෙයද ක්‍රියාත්මක වනු ඇත, IMO එය වඩා හොඳින් වැඩ කරයි ...

  3. සම්පත තුළම. බොහෝ ගොනු ආකෘතිවල ඒවායේ අනුවාද අංක සාමාන්‍යයෙන් ශීර්ෂකය තුළ අන්තර්ගත වේ; ගොනු මෘදුකාංගයේ පවත්නා සියලුම අනුවාදයන් අවබෝධ කර ගැනීමෙන් නව මෘදුකාංගයට 'යන්තම් වැඩ කිරීමට' මෙය ඉඩ දෙන අතර, පැරණි මෘදුකාංගයට සහය නොදක්වන (නවතම) අනුවාදයක් නියම කර ඇත්නම් ඒවා ක්‍රියාත්මක කළ හැකිය. REST API එකක සන්දර්භය තුළ, එයින් අදහස් වන්නේ ඔබේ යූආර්අයි කිසි විටෙකත් වෙනස් විය යුතු නැති බවයි, ඔබට භාර දුන් දත්තවල අනුවාදයට ඔබේ ප්‍රතිචාරය පමණි.

ප්රවේශයන් තුනම භාවිතා කිරීමට හේතු මට පෙනේ:

  1. ඔබ නව ඒපීඅයි පිරිසිදු කිරීමට කැමති නම් හෝ ඔබට එවැනි ප්‍රවේශයක් අවශ්‍ය ප්‍රධාන අනුවාද වෙනස් කිරීම් සඳහා.
  2. PUT / POST කිරීමට පෙර සේවාදායකයා දැන ගැනීමට ඔබට අවශ්‍ය නම් එය ක්‍රියාත්මක වේද නැද්ද යන්න.
  3. සේවාදායකයාට එය ක්‍රියාත්මක වන්නේ දැයි සොයා ගැනීමට එහි PUT / POST කළ යුතු නම් එය හරි නම්.

8

ඔබගේ REST API සංස්කරණය කිරීම වෙනත් ඕනෑම API එකක අනුවාදයට සමානය. සුළු වෙනස්කම් තැනින් තැන කළ හැකිය, ප්‍රධාන වෙනස්කම් සඳහා නව API එකක් අවශ්‍ය විය හැකිය. ඔබට පහසුම දෙය වන්නේ සෑම විටම මුල සිටම ආරම්භ කිරීමයි, එනම් URL එකෙහි අනුවාදය තැබීමේදී වඩාත් අර්ථවත් වේ. ඔබට සේවාදායකයාට ජීවිතය පහසු කර ගැනීමට අවශ්‍ය නම්, පසුගාමී අනුකූලතාව පවත්වා ගැනීමට ඔබ උත්සාහ කරයි, එය ඔබට ක්ෂය කිරීම (ස්ථිර යළි-යොමුවීම්), අනුවාද කිහිපයක සම්පත් ආදිය කළ හැකිය. මෙය වඩාත් විචක්ෂණශීලී වන අතර වැඩි උත්සාහයක් අවශ්‍ය වේ. "සිසිල් යූආර්අයි වෙනස් නොවේ" යන්නෙහි REST දිරිමත් කරන්නේ ද එයයි.

අවසානයේ එය වෙනත් API නිර්මාණයකට සමානය. සේවාදායකයාගේ පහසුව සඳහා බර කිරා බැලීම. ඔබගේ API සඳහා අර්ථකථන අනුවාදයක් අනුගමනය කිරීම සලකා බලන්න, එමඟින් ඔබේ නව අනුවාදය කෙතරම් පසුගාමී අනුකූලද යන්න ඔබේ ගනුදෙනුකරුවන්ට පැහැදිලි කරයි.

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.