የትኛውን የመተግበሪያ ንብርብር ፕሮቶኮል ይጠቀማል የመልእክት አይነቶችን ያግኙ እና ይለጥፉ። በPUT፣POST እና PATCH መካከል ያለው ልዩነት ምንድን ነው? የኤችቲቲፒ ትራፊክን ለመለየት የሚረዱ መሣሪያዎች

ይህ ጽሑፍ ለአንዱ መጣጥፌ በሰጡት አስተያየት ላይ ለተጠየቀው ጥያቄ መልስ ነው።

በዚህ ጽሑፍ ውስጥ የኤችቲቲፒ ስልቶች GET/POST/PUT/DELETE እና ሌሎች ምን እንደሆኑ፣ ለምን እንደተፈለሰፉ እና በ REST መሰረት እንዴት እንደሚጠቀሙባቸው ልነግርዎ እፈልጋለሁ።

HTTP

ስለዚህ, የበይነመረብ ዋና ፕሮቶኮሎች አንዱ ምንድን ነው? መንጠቆቹን ወደ RFC2616 እልካለሁ፣ እና ለቀረው በሰው እናገራለሁ :)

ይህ ፕሮቶኮል ጥያቄ (ጥያቄ) እና ምላሽ (ምላሽ) በሚባሉት መልእክቶች ላይ የተመሰረተ የሁለት ኮምፒውተሮች (ደንበኛ እና አገልጋይ) መስተጋብርን ይገልጻል። እያንዳንዱ መልእክት ሶስት ክፍሎችን ያቀፈ ነው-የመጀመሪያ መስመር ፣ ራስጌዎች እና አካል። በዚህ ሁኔታ የመነሻ መስመር ብቻ ያስፈልጋል.

የጥያቄው እና ምላሹ መነሻ መስመሮች የተለያዩ ቅርፀቶች አሏቸው - እኛ የምንፈልገው የጥያቄውን መነሻ መስመር ብቻ ነው ፣ ይህም ይመስላል።

ዘዴ ዩአርአይ HTTP/ VERSION ,

METHOD የኤችቲቲፒ መጠየቂያ ዘዴ ሲሆን ዩአርአይ የንብረት መለያ ነው፣ VERSION የፕሮቶኮል ስሪት ነው (የአሁኑ ስሪት 1.1 የአሁኑ ነው)።

ራስጌዎች በኮሎን የተለዩ የስም-እሴት ጥንዶች ስብስብ ናቸው። ራስጌዎቹ የተለያዩ የአገልግሎት መረጃዎችን ያስተላልፋሉ፡ የመልእክት ኢንኮዲንግ፣ የአሳሽ ስም እና ስሪት፣ ደንበኛው የመጣበትን አድራሻ (ማጣቀሻ) እና የመሳሰሉት።

የመልእክቱ አካል ትክክለኛው መረጃ እየተላለፈ ነው። በምላሹ, የተላለፈው መረጃ ብዙውን ጊዜ አሳሹ የጠየቀው የኤችቲኤምኤል ገጽ ነው, እና በጥያቄው ውስጥ, ለምሳሌ በመልዕክቱ አካል ውስጥ, በአገልጋዩ ላይ የተጫኑ ፋይሎች ይዘቶች ይተላለፋሉ. ግን እንደ አንድ ደንብ ፣ በጥያቄው ውስጥ ምንም የመልእክት አካል የለም ።

የኤችቲቲፒ መስተጋብር ምሳሌ

አንድ ምሳሌ እንመልከት።

ጥያቄ፡-
GET /index.php HTTP/1.1 አስተናጋጅ፡ example.com የተጠቃሚ ወኪል፡ Mozilla/5.0 (X11; U; Linux i686; ru; rv:1.9b5) Gecko/2008050509 Firefox/3.0b5 ተቀበል፡ ጽሑፍ/html ግንኙነት፡ ዝጋ
የመጀመሪያው መስመር የመጠይቁ መስመር ነው, የተቀሩት ራስጌዎች ናቸው; የመልእክት አካል ጠፍቷል

መልስ፡-
HTTP/1.0 200 እሺ አገልጋይ፡ nginx/0.6.31 ይዘት-ቋንቋ፡ ru ይዘት-አይነት፡ ጽሑፍ/html; charset=utf-8 የይዘት ርዝመት፡ 1234 ግንኙነት፡ ዝጋ ... የኤችቲኤምኤል ገጹ ራሱ...

መርጃዎች እና ዘዴዎች

ወደ ጥያቄው መነሻ መስመር እንመለስ እና እንደ URI ያለ ግቤት እንደያዘ እናስታውስ። ይህ የሚያመለክተው ዩኒፎርም ሪሶርስ ለዪን - ወጥ መገልገያ መለያ ነው። ሀብት እንደ አንድ ደንብ በአገልጋዩ ላይ ያለ ፋይል ነው (በዚህ ጉዳይ ላይ URI ምሳሌ “/styles.css” ነው) ፣ ግን በአጠቃላይ ሀብቱ እንዲሁ የተወሰነ ረቂቅ ነገር ሊሆን ይችላል (“/blogs/webdev/” - ነጥቦች ከአንድ የተወሰነ ፋይል ይልቅ ወደ “ድር” ብሎክ ልማት።

የኤችቲቲፒ ጥያቄ አይነት (የኤችቲቲፒ ዘዴ ተብሎም ይጠራል) ለአገልጋዩ በንብረቱ ላይ ምን አይነት እርምጃ ልንሰራ እንደምንፈልግ ይነግረዋል። መጀመሪያ ላይ (በ90ዎቹ መጀመሪያ ላይ) ደንበኛው ከንብረት ማግኘት የሚችለው አንድ ነገር ብቻ እንደሆነ ይታሰብ ነበር - ለመቀበል አሁን ግን የኤችቲቲፒ ፕሮቶኮልን በመጠቀም ልጥፎችን መፍጠር፣ ፕሮፋይል ማርትዕ፣ መልዕክቶችን መሰረዝ እና ሌሎችንም ማድረግ ይችላሉ። እና እነዚህ ድርጊቶች "ደረሰኝ" ከሚለው ቃል ጋር ለማጣመር አስቸጋሪ ናቸው.

እርምጃዎችን በኤችቲቲፒ ዘዴዎች ደረጃ ከሀብቶች ለመለየት የሚከተሉት አማራጮች ተፈለሰፉ።

  • GET - ሀብት ማግኘት
  • POST - ሀብት መፍጠር
  • PUT - የንብረት ማሻሻያ
  • ሰርዝ - የንብረት መሰረዝ
እባክዎን ያስተውሉ የኤችቲቲፒ ዝርዝር መግለጫ አገልጋዩ ሁሉንም ዘዴዎች እንዲረዳ (ከእነዚህም ብዙዎቹ ከ 4 በላይ ናቸው) - GET ብቻ ነው የሚፈለገው ፣ እና ከአንድ የተወሰነ ጋር ጥያቄ ሲደርሰው ምን ማድረግ እንዳለበት ለአገልጋዩ አይናገርም። ዘዴ. ይህ ማለት አገልጋዩ ለ DELETE /index.php HTTP/1.1 ጥያቄ ምላሽ ይሰጣል ግዴታ አይደለምከ GET/index.php HTTP/1.1 ጥያቄ ጋር ተመሳሳይ በሆነው በአገልጋዩ ላይ ያለውን ማውጫ.php ይሰርዙ ግዴታ አይደለምየ index.php ገጽን ወደ እርስዎ ይመልሱ ፣ ለምሳሌ ሊሰርዘው ይችላል :)

REST ወደ ጨዋታ ይመጣል

REST (የመወከል ግዛት ማስተላለፍ) በ 2000 በሮይ ፊልዲንግ ከኤችቲቲፒ ፕሮቶኮል አዘጋጆች አንዱ የሆነው የድረ-ገጽ አፕሊኬሽኖችን ለመገንባት የመርሆች ቡድን ስም ሆኖ የተዋወቀ ቃል ነው። በአጠቃላይ፣ REST ከኤችቲቲፒ ሰፋ ያለ ቦታን ይሸፍናል - እንዲሁም ከሌሎች ፕሮቶኮሎች ጋር በሌሎች አውታረ መረቦች ውስጥ ጥቅም ላይ ሊውል ይችላል። REST በ “ሀብት” እና “ግስ” ጽንሰ-ሀሳቦች ላይ በመመርኮዝ በደንበኛው እና በአገልጋይ መካከል ያለውን የግንኙነት መርሆዎችን ይገልፃል (እንደ ርዕሰ-ጉዳይ እና ተሳቢ ሊረዳ ይችላል)። በኤችቲቲፒ ጉዳይ፣ ሀብቱ በዩአርአይ የሚታወቅ ሲሆን ግሱ ደግሞ የኤችቲቲፒ ዘዴ ነው።

REST ተመሳሳዩን ዩአርአይ ለተለያዩ ግብዓቶች መጠቀምን መተው ይጠቁማል (ይህም የሁለት የተለያዩ መጣጥፎች አድራሻ እንደ /index.php?article_id=10 እና /index.php?article_id=20 - ይህ REST-መንገድ አይደለም) እና ለተለያዩ ድርጊቶች የተለያዩ የኤችቲቲፒ ዘዴዎችን በመጠቀም። ማለትም የ REST አቀራረብን በመጠቀም የተጻፈ የድር መተግበሪያ በ HTTP DELETE ዘዴ ሲደርሱበት ይሰርዛል (በእርግጥ ይህ ማለት ሁሉንም እና ሁሉንም ሰው ለማጥፋት እድሉን መስጠት አስፈላጊ ነው ማለት አይደለም ነገር ግን ማንኛውምየመተግበሪያው የመሰረዝ ጥያቄ HTTP DELETE ዘዴን መጠቀም አለበት።

REST ለፕሮግራም አድራጊዎች ደረጃቸውን የጠበቁ እና ከበፊቱ የበለጠ ቆንጆ የሆኑ የድር መተግበሪያዎችን እንዲጽፉ ያስችላቸዋል። REST ን በመጠቀም አዲስ ተጠቃሚን ለመጨመር ዩአርአይ /user.php?action=create (GET/POST method) አይሆንም፣ ግን በቀላሉ /user.php (በጥብቅ የPOST ዘዴ)።

በውጤቱም, ያለውን የኤችቲቲፒ ዝርዝር መግለጫ እና የ REST አቀራረብን በማጣመር, የተለያዩ የኤችቲቲፒ ዘዴዎች በመጨረሻ ትርጉም ይሰጣሉ. GET - ሀብትን ይመልሳል ፣ POST - አዲስ ይፈጥራል ፣ PUT - ያለውን ያዘምናል ፣ ሰርዝ - ይሰርዘዋል።

ችግሮች?

አዎ፣ RESTን በተግባር መጠቀም ላይ ትንሽ ችግር አለ። ይህ ችግር HTML ይባላል።

PUT/DELETE ጥያቄዎችን በ XMLHttpRequest በመጠቀም መላክ ይቻላል፣ አገልጋዩን በእጅ በመገናኘት (በ curl curl ወይም telnet)፣ ነገር ግን ሙሉ የPUT/ሰርዝ ጥያቄ የሚልክ HTML ቅጽ ማድረግ አይችሉም።

ነገሩ የኤችቲኤምኤል ስፔስፊኬሽን ከGET ወይም POST ሌላ መረጃ የሚያቀርቡ ቅጾችን እንዲፈጥሩ አይፈቅድልዎትም ። ስለዚህ, ከሌሎች ዘዴዎች ጋር በተለምዶ ለመስራት, ሰው ሰራሽ በሆነ መንገድ መኮረጅ አለብዎት. ለምሳሌ ፣ በ Rack (ሩቢ ከድር አገልጋይ ጋር የሚገናኝበት ዘዴ ፣ Rails ፣ Merb እና ሌሎች የሩቢ ማዕቀፎች Rack በመጠቀም የተሰሩ ናቸው) ፣ በቅጹ ላይ “_ዘዴ” በሚለው ስም የተደበቀ መስክ ማከል ይችላሉ ፣ እና የስልቱን ስም እንደ እሴቱ ይግለጹ (ለምሳሌ "PUT") - በዚህ ሁኔታ, የPOST ጥያቄ ይላካል, ነገር ግን ሬክ ከPOST ይልቅ PUT እንደተቀበለ ለማስመሰል ይችላል.

በድር ቴክኖሎጂ ውስጥ ያሉ ሁሉም መረጃዎች በፕሮቶኮሉ በኩል ይተላለፋሉ HTTP. ልዩነቱ የጃቫ ፕሮግራሚንግ በመጠቀም መለዋወጥ ወይም ከፕለጊን አፕሊኬሽኖች መለዋወጥ ነው። በኤችቲቲፒ ላይ እንደ የድር ልውውጥ አካል የሚተላለፈውን ትክክለኛ የትራፊክ መጠን ግምት ውስጥ በማስገባት ይህንን ፕሮቶኮል ብቻ እንመለከታለን። ይህን ስናደርግ እንደሚከተሉት ባሉ ጉዳዮች ላይ እናተኩራለን።

  • አጠቃላይ የመልዕክት መዋቅር;
  • የመዳረሻ ዘዴዎች;
  • የልውውጦችን ማመቻቸት.

አጠቃላይ የመልእክት መዋቅር

HTTPየመተግበሪያ ንብርብር ፕሮቶኮል ነው። በደንበኛው-አገልጋይ ልውውጥ ሞዴል ላይ ያተኮረ ነው. ደንበኛው እና አገልጋዩ የኤችቲቲፒ መልእክት የሚባሉትን መረጃዎች ይለዋወጣሉ። በደንበኛ ወደ አገልጋይ የሚላኩ መልእክቶች ጥያቄ ይባላሉ፣ በአገልጋዩ ወደ ደንበኛ የሚላኩ መልእክቶች ምላሽ ይባላሉ። መልእክት ሁለት ክፍሎችን ሊይዝ ይችላል፡ ራስጌ እና አካል። ሰውነቱ ከራስጌው በባዶ መስመር ተለያይቷል።

ራስጌው የመልእክቱን አካል ለማስኬድ ወይም ልውውጡን ለመቆጣጠር አስፈላጊ የሆነውን የአገልግሎት መረጃ ይዟል። ራስጌው የራስጌ መመሪያዎችን ያቀፈ ነው፣ እነሱም ብዙውን ጊዜ እያንዳንዳቸው በአዲስ መስመር ላይ ይፃፋሉ።

የመልእክቱ አካል አማራጭ ነው፣ ግን የመልእክቱ ራስጌ ነው። ጽሑፍ፣ ግራፊክስ፣ ኦዲዮ ወይም ቪዲዮ መረጃ ሊይዝ ይችላል።

ከዚህ በታች የኤችቲቲፒ ጥያቄ ነው፡-

GET/ HTTP/1.0 ተቀበል፡ ምስል/jpeg ባዶ ሕብረቁምፊ

እና መልሱ፡-

HTTP/1.0 200 እሺ ቀን፡ ዓርብ፣ ጁላይ 24 ቀን 1998 21፡30፡51 ጂኤምቲ አገልጋይ፡ Apache/1.2.5 የይዘት አይነት፡ ጽሑፍ/html የይዘት-ርዝመት፡ 21345 ባዶ ሕብረቁምፊ ...

“ባዶ መስመር” የሚለው ጽሁፍ የኤችቲቲፒ መልእክትን ራስጌ ከአካሉ የሚለይ ባዶ መስመር መኖሩን ለማመልከት ብቻ ነው።

አገልጋዩ፣ ከደንበኛ ጥያቄ ሲደርሰው፣ የኤችቲቲፒ ጥያቄ ራስጌ መረጃን በከፊል ወደ አካባቢ ተለዋዋጮች ይለውጣል፣ ይህም በሲጂአይ ስክሪፕት ለመተንተን ይገኛል። ጥያቄው አካል ካለው፣ በመደበኛው የግቤት ዥረት በኩል ለስክሪፕቱ ይገኛል።

የመዳረሻ ዘዴዎች

የኤችቲቲፒ ጥያቄ በጣም አስፈላጊው መመሪያ የመዳረሻ ዘዴ ነው። በጥያቄው የመጀመሪያ መስመር ውስጥ እንደ መጀመሪያው ቃል ተጠቁሟል። በእኛ ምሳሌ ይህ GET ነው። አራት ዋና የመዳረሻ ዘዴዎች አሉ-

  • ጭንቅላት;
  • መለጠፍ;

ከእነዚህ አራት ዘዴዎች በተጨማሪ አምስት ተጨማሪ የመዳረሻ ዘዴዎች አሉ, ግን ብዙ ጊዜ ጥቅም ላይ አይውሉም.

የGET ዘዴ

የGET ዘዴ ደንበኛው በነባሪነት ለአገልጋዩ ጥያቄ ሲያቀርብ ይጠቀማል። በዚህ አጋጣሚ ደንበኛው ሊቀበለው የሚፈልገውን የመረጃ አድራሻ (ዩአርኤል)፣ የኤችቲቲፒ ፕሮቶኮል ሥሪት፣ የሚደግፈውን የ MIME ሰነድ አይነቶች እና የደንበኛውን ሶፍትዌር ስሪት እና ስም ያቀርባል። እነዚህ ሁሉ መለኪያዎች በ HTTP ጥያቄ ራስጌ ውስጥ ተገልጸዋል። አካሉ በጥያቄው ውስጥ አልተላከም።

በምላሹ፣ አገልጋዩ የኤችቲቲፒ ፕሮቶኮል ሥሪትን፣ የመመለሻ ኮድን፣ የመልዕክት አካል ይዘት አይነትን፣ የመልእክት አካል መጠንን እና ሌሎች በርካታ አማራጭ የኤችቲቲፒ አርዕስት መመሪያዎችን ሪፖርት ያደርጋል። ሀብቱ ራሱ፣ አብዛኛውን ጊዜ የኤችቲኤምኤል ገጽ፣ በምላሹ አካል ውስጥ ይላካል።

HEAD ዘዴ

የ HEAD ዘዴ በኤችቲቲፒ ፕሮቶኮል ላይ ሲሰራ ልውውጦችን ለመቀነስ ያገለግላል። የመልእክቱ አካል በምላሹ ካልተላከ በስተቀር ከ GET ዘዴ ጋር ተመሳሳይ ነው። ይህ ዘዴ የሃብት የመጨረሻውን የማሻሻያ ጊዜ እና የተሸጎጡ ሀብቶች የሚያበቃበትን ቀን እንዲሁም የአለም አቀፍ ድር የመረጃ መቃኛ ፕሮግራሞችን ሲጠቀሙ ለመፈተሽ ይጠቅማል። በአጭሩ የ HEAD ዘዴ በኔትወርኩ ላይ የሚተላለፈውን የኤችቲቲፒ ልውውጥ አካል አድርጎ የሚተላለፈውን የመረጃ መጠን ለመቀነስ የተነደፈ ነው።

የPOST ዘዴ

የPOST ዘዴ ከGET ዘዴ ሌላ አማራጭ ነው። የPOST ዘዴን በመጠቀም ውሂብን በሚለዋወጡበት ጊዜ የደንበኛው ጥያቄ የኤችቲቲፒ መልእክት አካል ይይዛል። ይህ አካል በኤችቲኤምኤል መልክ ከገባው መረጃ ወይም ከተያያዘ ውጫዊ ፋይል ሊፈጠር ይችላል። ምላሹ በተለምዶ ሁለቱንም ራስጌ እና የኤችቲቲፒ መልእክት አካል ይይዛል። የPOST ዘዴን በመጠቀም ልውውጥ ለመጀመር የFORM መያዣው METHOD ባህሪ ወደ "መለጠፍ" መቀናበር አለበት።

የ PUT ዘዴ

የ PUT ዘዴ የኤችቲኤምኤል ገጾችን ወደ HTTP አገልጋይ ማውጫ ለማተም ይጠቅማል። መረጃን ከደንበኛ ወደ አገልጋይ ሲያስተላልፍ, መልእክቱ ሁለቱንም የመልዕክት ራስጌ ይይዛል, ይህም የሀብቱን ዩአርኤል, እና አካል - የተስተናገደው ሀብት ይዘት.

ምላሹ አብዛኛውን ጊዜ የንብረት አካሉን አይልክም፣ ይልቁንም የመልዕክቱ ራስጌ የግብአት ድልድል የተሳካ ወይም ያልተሳካ መሆኑን የሚወስን የመመለሻ ኮድ ይዟል።

የልውውጦችን ማመቻቸት

የኤችቲቲፒ ፕሮቶኮል በመጀመሪያ የተነደፈው ለቋሚ ግንኙነቶች አይደለም። ይህ ማለት አገልጋዩ ከደንበኛው የቀረበለትን ጥያቄ ተቀብሎ ምላሽ ከሰጠ በኋላ በደንበኛው እና በአገልጋዩ መካከል ያለው ግንኙነት ይቋረጣል ማለት ነው። ለአዲስ የመረጃ ልውውጥ አዲስ ግንኙነት መመስረት አለበት። ይህ አቀራረብ ሁለቱም ጥቅሞች እና ጉዳቶች አሉት.

ጥቅሞቹ ብዙ አጭር ጥያቄዎችን በአንድ ጊዜ የማገልገል ችሎታን ያካትታሉ። በታዋቂ ሰርቨሮች ላይ እንኳን በቀን ወደ አንድ ሚሊዮን የሚጠጉ ጥያቄዎችን ሲያቀርቡ የተከፈቱ ግንኙነቶች ቁጥር በመቶዎች ሊበልጥ አይችልም። ከዚህም በላይ አንድ ደንበኛ በአንድ ጊዜ እስከ 40 የሚደርሱ ግንኙነቶችን መክፈት ይችላል, እና ከአገልጋዩ እይታ አንጻር ሁሉም እኩል ናቸው. በከፍተኛ ፍጥነት የመገናኛ መስመሮች, ይህ ለጠቅላላው ገጽ (ጽሑፍ, ግራፊክስ, ወዘተ) ለደንበኛው ጥያቄ አጭር ምላሽ ለመስጠት ያስችላል.

የዚህ የልውውጥ እቅድ ጉዳቱ የሚያጠቃልለው፡ በእያንዳንዱ ጊዜ ግንኙነት የመመስረት አስፈላጊነት እና ከመረጃ ምንጭ ጋር አብሮ የመስራትን ክፍለ ጊዜ ማቆየት አለመቻል ነው። በ TCP ትራንስፖርት ፕሮቶኮል በኩል ግንኙነትን ሲጀምሩ እና ይህን ግንኙነት ሲያቋርጡ በጣም ብዙ የአገልግሎት መረጃ ማስተላለፍ አስፈላጊ ነው. በኤችቲቲፒ ውስጥ የክፍለ-ጊዜ ድጋፍ አለመኖር እንደ የውሂብ ጎታዎች ወይም ማረጋገጫ ከሚያስፈልጋቸው ሀብቶች ጋር ለመስራት አስቸጋሪ ያደርገዋል።

የክፍት የቲሲፒ ግንኙነቶችን ቁጥር ለማመቻቸት የኤችቲቲፒ ፕሮቶኮል ስሪቶች 1.0 እና 1.1 በህይወት መቆየት ሁነታን ይሰጣሉ። በዚህ ሁነታ, ግንኙነቱ የሚጀምረው አንድ ጊዜ ብቻ ነው, እና በርካታ የኤችቲቲፒ ልውውጦች በእሱ ላይ በቅደም ተከተል ሊከናወኑ ይችላሉ.

የክፍለ ጊዜ ድጋፍ ለመስጠት ኩኪዎች ወደ HTTP ራስጌ መመሪያዎች ታክለዋል። በኤችቲቲፒ ፕሮቶኮል ላይ ሲሰሩ የግንኙነት ድጋፍን ለማስመሰል ያስችሉዎታል።

በድር ቴክኖሎጂ ውስጥ የተጠቃሚ በይነገጽ ዓይነቶች

ዓለም አቀፍ ድረ-ገጾች በተግባራዊ ዓላማቸው መሠረት በበርካታ ዓይነቶች ሊከፈሉ ይችላሉ-የመረጃ ገጾች ፣ የአሰሳ ገጾች ፣ የመረጃ መለዋወጫ ገጾች። በብዙ አጋጣሚዎች እነዚህ ተግባራት ወደ አንድ ገጽ ሊጣመሩ ይችላሉ.

የኢንፎርሜሽን ገፆች የሀይፐር ጽሁፍ አውድ ሽግግሮች ሊሆኑ የሚችሉ ተከታታይ የመረጃ አቀራረብ ናቸው። ተጠቃሚው በቅደም ተከተል ይመለከታቸዋል. የከፍተኛ ጽሑፍ አገናኞች በተለምዶ የግርጌ ማስታወሻዎችን፣ ማስታወሻዎችን ወይም የማጣቀሻ ዝርዝሮችን እና ሌሎች ተያያዥ ቁሳቁሶችን ማጣቀሻዎችን ለመፍጠር ያገለግላሉ። የእንደዚህ አይነት ገፆች የተለመዱ ምሳሌዎች ምክሮች, መመሪያዎች, የኩባንያ መግለጫዎች, ታሪካዊ መረጃዎች, ወዘተ.

የዳሰሳ ገፆች የድረ-ገፁን ማቴሪያሎች ለማሰስ የሚያስችልዎ የሃይፐርቴክስት አገናኞች ስብስብ ናቸው። የዚህ አይነት ዓይነተኛ ምሳሌ መነሻ ገጽ ነው። እንደ አንድ ደንብ, ረጅም የጽሑፍ መግለጫዎችን እና ምሳሌዎችን አልያዘም, የተለያዩ ምናሌዎችን ያካትታል. እነዚህ ምናሌዎች በዝርዝሮች፣ በአገናኝ ሠንጠረዦች ወይም በምስል ካርታዎች ሊተገበሩ ይችላሉ።

የውሂብ መለዋወጫ ገፆች ከሀብቱ መደበኛ አድራሻ (ዩአርኤል) የሚለየውን የተወሰነ መጠን ወደ አገልጋዩ ለማስተላለፍ ያስችሉዎታል። ሲሰሱ እና ሲያስሱ፣ ተጠቃሚው በቀላሉ አዲስ ገጾችን የሚጭኑ የሃይፐር ቴክስት አገናኞችን ይመርጣል። መረጃን በሚለዋወጡበት ጊዜ የመርጃ አድራሻው ወደ አገልጋዩ ብቻ ሳይሆን ተጠቃሚው የሚያስገባ ተጨማሪ መረጃም ጭምር ነው.

በገጾቹ ተግባራዊ ዓላማ ላይ በመመስረት ተጠቃሚው የሚሠራበት የመርጃ በይነገጽ ገጽታ ይለወጣል። በመጀመሪያዎቹ ሁለት አጋጣሚዎች የ hypertext አገናኝን ለመምረጥ አይጤውን ብቻ ይጠቀሙ እና አዲስ ገጽ ወዲያውኑ ይጫናል. የውሂብ መለዋወጫ ገጾችን በተመለከተ, የኤችቲኤምኤል ቅጽ መስኮችን መሙላት እና ውሂቡን ወደ አገልጋዩ መላክ አለብዎት.

ከዚህም በላይ ቅጾች ከሞላ ጎደል ሁሉንም አስፈላጊ የግቤት መስኮችን እና ምናሌዎችን ያቀርባሉ። የኤችቲኤምኤል ቅጾች የማይፈቅዱት ብቸኛው ነገር የጎጆ ምናሌዎች ነው። ቅጾች ከመረጃ ልውውጥ በላይ ጥቅም ላይ ሊውሉ ይችላሉ. በጃቫስክሪፕት ውስጥ በጣም የዳበሩ የቅጽ ማቀነባበሪያ ስልቶች አሉ።

Hypertext Transfer Protocol (HTTP) በበይነመረቡ ላይ የህይወት መሰረት ነው. ሰነድ በገባ ቁጥር ወይም በAJAX ጥያቄ ውስጥ ጥቅም ላይ ይውላል። ነገር ግን ኤችቲቲፒ በሚገርም ሁኔታ ለአንዳንድ የድር ገንቢዎች ብዙም አይታወቅም።

በዚህ መግቢያ ላይ፣ ከኤችቲቲፒ በስተጀርባ ያሉትን የREST ንድፍ መርሆችን እንቃኛለን እና ኃይላቸውን በመጠቀም ከማንኛውም መሳሪያ ወይም ኦፕሬቲንግ ሲስተም ሊሰሩ የሚችሉ በይነገጽ ለመፍጠር እንሞክራለን።

ትምህርት እንደገና ታትሟል

በየጥቂት ሳምንታት አንዳንድ የአንባቢዎቻችን ተወዳጅ ልጥፎችን ከጣቢያው ታሪክ ደግመን እንጎበኛለን። ይህ ትምህርት ለመጀመሪያ ጊዜ በኅዳር 2010 ታትሟል።

ለምን አርፏል?

REST በገለልተኛ ስርዓቶች መካከል መስተጋብርን ለማደራጀት ቀላል መንገድ ነው።

REST በገለልተኛ ስርዓቶች መካከል መስተጋብርን ለማደራጀት ቀላል መንገድ ነው። ከ 2005 ጀምሮ ታዋቂ ነው እና እንደ Twitter API ያሉ አገልግሎቶችን ዲዛይን ያነሳሳል። ምክንያቱም REST ከደንበኞች ጋር እንደ ሞባይል ስልኮች እና ሌሎች ድረ-ገጾች የተለያዩ ግንኙነቶችን ስለሚያስችል። በንድፈ ሀሳብ፣ REST በድር ላይ የተመሰረተ አይደለም፣ ነገር ግን ሁልጊዜ ማለት ይቻላል በዚህ መልኩ የሚተገበር እና በኤችቲቲፒ ተመስጦ ነው። በዚህ ምክንያት፣ ኤችቲቲፒ በሚቻልበት ቦታ ሁሉ REST መጠቀም ይቻላል።

አንድ አማራጭ በኤችቲቲፒ አናት ላይ በአንጻራዊነት ውስብስብ ስምምነቶችን መገንባት ነው። ይህ ብዙውን ጊዜ አዲስ የኤክስኤምኤል ቋንቋዎችን መልክ ይይዛል። በጣም የሚያስደንቀው ምሳሌ ሳሙና ነው. ሙሉ ለሙሉ አዲስ የውል ስምምነቶችን መማር አለብህ፣ ነገር ግን ኤችቲቲፒን ሙሉ በሙሉ አትጠቀምም። REST በኤችቲቲፒ ተመስጦ ስለነበረ እና ጥንካሬውን ስለሚጫወት፣ HTTP እንዴት እንደሚሰራ ለማወቅ ምርጡ መንገድ ነው።

ከመጀመሪያው አጠቃላይ እይታ በኋላ እያንዳንዱን የኤችቲቲፒ: URLs፣ HTTP ትዕዛዞችን እና የምላሽ ኮዶችን እንመለከታለን። በ RESTful ውስጥ እንዴት እንደምንጠቀምባቸውም እንመለከታለን። በመንገዳችን ላይ፣ ከኩባንያው ደንበኞች ጋር የተገናኘ መረጃን በድር በይነገጽ የመከታተያ ሂደትን በሚመስል ምሳሌ ንድፈ ሃሳቡን እናሳያለን።

HTTP

HTTP ሰነዶችን በኢንተርኔት ላይ ለመላክ የሚያስችል ፕሮቶኮል ነው።

HTTP ሰነዶችን በኢንተርኔት ላይ ለመላክ የሚያስችል ፕሮቶኮል ነው። ፕሮቶኮል ምን አይነት መልእክቶች ሊለዋወጡ እንደሚችሉ እና ምን አይነት መልእክቶች ለሌሎች ተገቢ ምላሽ እንደሆኑ የሚወስኑ ህጎች ስብስብ ነው። ሌላው የተለመደ ፕሮቶኮል POP3 ሲሆን በሃርድ ድራይቭዎ ላይ ኢሜል ለማውጣት ሊጠቀሙበት ይችላሉ.

በኤችቲቲፒ ውስጥ ሁለት የተለያዩ ሚናዎች አሉ፡ አገልጋይ እና ደንበኛ። እንደ አንድ ደንብ ደንበኛው ሁልጊዜ ውይይቱን ይጀምራል; አገልጋዩ ምላሽ ይሰጣል. HTTP በጽሁፍ ላይ የተመሰረተ ነው; ማለትም፣ የመልእክት አካሉ ሌሎች ሚዲያዎችን ሊይዝ ቢችልም መልእክቶች በመሠረቱ የጽሑፍ ትንንሽ ናቸው። ጽሑፍ መጠቀም የኤችቲቲፒ ትራፊክን መከታተል ቀላል ያደርገዋል።

የኤችቲቲፒ መልእክቶች ራስጌ እና አካል ያካትታሉ። ሰውነት ብዙውን ጊዜ ባዶ ሆኖ ሊቆይ ይችላል; በራስጌው ላይ ባለው መመሪያ መሰረት ጥቅም ላይ እንዲውል በአውታረ መረቡ ላይ ማስተላለፍ የሚፈልጉትን ውሂብ ይዟል. ራስጌው እንደ ኢንኮዲንግ መረጃ ያሉ ሜታዳታ ይዟል። ነገር ግን፣ በጥያቄ ጊዜ፣ አስፈላጊ የኤችቲቲፒ ዘዴዎችንም ይዟል። በREST ዘይቤ፣ የራስጌ ውሂብ ብዙ ጊዜ ከሰውነት ውሂብ የበለጠ ትርጉም ያለው መሆኑን ያገኙታል።

የኤችቲቲፒ ስለላ ስራ ላይ

Chrome Developer Tools ወይም Firefox በFirebug ቅጥያ እየተጠቀሙ ከሆነ የኔት ፓነልን ጠቅ ያድርጉ እና እንዲነቃ ያድርጉት። ከዚያ በሚፈልጉበት ጊዜ ስለ HTTP ጥያቄዎች መረጃን ማየት ይችላሉ። ለምሳሌ፡-

ከኤችቲቲፒ ጋር ለመተዋወቅ ሌላው ጠቃሚ መንገድ እንደ ዩአርኤል ያለ ልዩ ደንበኛን መጠቀም ነው።

አግኝ

GET ቀላሉ የኤችቲቲፒ ጥያቄ አይነት ነው። አገናኙን ጠቅ ባደረጉ ቁጥር ወይም በአድራሻ አሞሌው ውስጥ ዩአርኤል በሚያስገቡበት ጊዜ አሳሽዎ የሚጠቀመው። አገልጋዩ በዩአርኤል የተገለጸውን መረጃ ለደንበኛው እንዲያስተላልፍ ያዛል። በGET ጥያቄ ምክንያት ምንም አይነት የአገልጋይ ወገን የውሂብ ለውጦች አይኖሩም። ከዚህ አንፃር የGET ጥያቄ ተነባቢ-ብቻ ነው፣ ነገር ግን በእርግጥ ደንበኛው ውሂቡን አንዴ ከተቀበለ በኋላ ማንኛውንም ኦፕሬሽን በራሱ ማከናወን ይችላል ፣ ለምሳሌ ፣ ለእይታ ቅርጸት ያድርጉት።

PUT

የPUT ጥያቄ ጥቅም ላይ የሚውለው በዩአርኤል የተገለጸውን ምንጭ መፍጠር ወይም ማዘመን ሲፈልጉ ነው። ለምሳሌ፡-

PUT /ደንበኞች/ሮቢን

በአገልጋዩ ላይ ሮቢን የሚባል ደንበኛ መፍጠር ይችላል። REST ሙሉ በሙሉ ከጀርባ ገለልተኛ መሆኑን ያስተውላሉ; በጥያቄው ውስጥ ውሂቡ እንዴት መፈጠር እንዳለበት ለአገልጋዩ የሚያሳውቅ ምንም ነገር የለም - ልክ እንደዛ መሆን አለበት። ይህ እንደ አስፈላጊነቱ ዋናውን ቴክኖሎጂ በቀላሉ እንዲቀይሩ ያስችልዎታል. የPUT ጥያቄዎች በሰውነት ውስጥ ሲዘምኑ ወይም ሲፈጥሩ ጥቅም ላይ የሚውል ውሂብ ይይዛሉ። በ CURL ውስጥ -d በመጠቀም ወደ ጥያቄ ውሂብ ማከል ይችላሉ።

Curl -v -X PUT -d "አንዳንድ ጽሑፍ"

ሰርዝ

ሰርዝ የ PUT ተቃራኒ ማድረግ አለበት; በጥያቄው ዩአርኤል የተገለጸውን ሃብት ማስወገድ ከፈለጉ ጥቅም ላይ መዋል አለበት።

Curl -v -X ሰርዝ /clients/anne

ይህ በ/ደንበኛ/አኔ ከተገለጸው ሃብት ጋር የተጎዳኘውን ሁሉንም ውሂብ ያስወግዳል።

POST

POST በአገልጋዩ ላይ ማድረግ የሚፈልጉት ሂደት መደገም ሲኖርበት የPOST ጥያቄው ከተደጋገመ (ማለትም፣ እነሱ አይደሉም) ጥቅም ላይ ይውላል። ኃይለኛ, በዚህ ላይ ተጨማሪ ከዚህ በታች). በተጨማሪም፣ የPOST ጥያቄዎች የጥያቄውን አካል እንደ የምትልኩት ዩአርኤል የበታች እንዲታይ ማድረግ አለባቸው።

በቀላል አነጋገር፡-

POST /ደንበኞች/

የሀብቱን ለውጥ በራሱ /ደንበኛ/ ማድረግ የለበትም፣ ነገር ግን የዩአርኤል ምንጭ ይጀምራል ከእሱ/ደንበኞች/ . ለምሳሌ፣ በአገልጋዩ የተፈጠረ መታወቂያ ጋር አዲስ ደንበኛን ወደ ዝርዝሩ ማከል ይችላል።

/ደንበኞች/አንዳንድ-ልዩ-መታወቂያ

የPUT ጥያቄዎች ከPOST ጥያቄዎች ይልቅ በቀላሉ ጥቅም ላይ ይውላሉ እና በተቃራኒው። አንዳንድ ሲስተሞች አንድን ብቻ ​​ይጠቀማሉ፣አንዳንዶቹ POSTን ለኦፕሬሽን ፍጠር እና PUT ለዝማኔ ስራዎች ይጠቀማሉ (በ PUT ጥያቄ እርስዎ ሁል ጊዜ ሙሉ ዩአርኤልን ስለሚገልጹ) አንዳንዶቹ ለዝማኔዎች POST እና PUTን ለመፍጠር ይጠቀማሉ።

ብዙውን ጊዜ የPOST ጥያቄዎች ከፍጠር/አዘምን/አጥፋው ጋር የማይጣጣሙ የአገልጋይ ስራዎችን ለማስነሳት ያገለግላሉ። ግን ይህ ከ REST ወሰን በላይ ነው። እንደ ምሳሌአችን፣ ሙሉ በሙሉ ከ PUT ጋር እንጣበቃለን።

የኤችቲቲፒ ዘዴ ምደባ

ደህንነቱ ያልተጠበቀ እና ደህንነቱ የተጠበቀ ዘዴዎች;

አስተማማኝ ዘዴዎች ሀብቶችን ፈጽሞ የማይለውጡ ናቸው. ከላይ ከተዘረዘሩት አራት ውስጥ ብቸኛው አስተማማኝ ዘዴዎች GET ናቸው. ሌሎች ደህንነታቸው የተጠበቁ አይደሉም ምክንያቱም ወደ ሀብት ማሻሻያ ሊመሩ ይችላሉ።

ደካማ ዘዴዎች;

እነዚህ ዘዴዎች ጥያቄው ምንም ያህል ጊዜ ቢደጋገም ተመሳሳይ ውጤት ያስገኛሉ: እነሱ GET, PUT እና DELETE ናቸው. አቅም የሌለው ብቸኛው ዘዴ POST ነው። PUT እና DELETE እንደ አቅሙ መቆጠሩ ሊያስገርም ይችላል፣ ምንም እንኳን ለማብራራት በጣም ቀላል ቢሆንም የPUT ዘዴን በተመሳሳይ አካል መደጋገሙ ሀብቱን ማሻሻል አለበት ስለዚህ በቀደመው የPUT ጥያቄ ላይ ከተገለጸው ጋር ተመሳሳይ ሆኖ እንዲቆይ ማድረግ ምንም አይለወጥም! በተመሳሳይም አንድን ሃብት ሁለት ጊዜ መሰረዝ ምንም ፋይዳ የለውም። ከዚያ በኋላ የ PUT ወይም Delete ጥያቄ ምንም ያህል ጊዜ ቢደጋገም ውጤቱ አንድ ጊዜ ብቻ እንደተሰራ መሆን አለበት.

አስታውስአንድ የተወሰነ የኤችቲቲፒ ዘዴ ጥቅም ላይ ሲውል ምን እንደሚሆን የሚወስነው እርስዎ ፕሮግራመር ነዎት። በኤችቲቲፒ ትግበራዎች ውስጥ ሃብቶች እንዲፈጠሩ፣ እንዲዘረዝሩ፣ እንዲሰረዙ ወይም እንዲዘምኑ የሚያደርግ ምንም ነገር የለም። የኤችቲቲፒ ፕሮቶኮሉን በትክክል ለመተግበር እና እነዚህን ትርጉሞች እራስዎ ለማስተዋወቅ መጠንቀቅ አለብዎት።

ተወካይ ቢሮዎች

የኤችቲቲፒ ደንበኛ እና የኤችቲቲፒ አገልጋይ በዩአርኤሎች ተለይተው ስለታወቁ ሀብቶች መረጃ ይለዋወጣሉ።

እስካሁን የተማርነውን እንደሚከተለው ማጠቃለል እንችላለን፡ የኤችቲቲፒ ደንበኛ እና የኤችቲቲፒ አገልጋይ በዩአርኤሎች ተለይተው ስለሚታወቁ ሀብቶች መረጃ ይለዋወጣሉ።

ጥያቄው እና ምላሹ የሀብቱን ውክልና ይዟል እንላለን። ውክልና ስንል ስለ ሃብት ሁኔታ ወይም ይህ ሁኔታ ወደፊት ምን መሆን እንዳለበት በተወሰነ ቅርጸት ያለ መረጃ ማለታችን ነው። ሁለቱም ራስጌ እና አካል የእይታ ክፍሎች ናቸው።

ሜታዳታ የያዙ የኤችቲቲፒ ራስጌዎች በኤችቲቲፒ ዝርዝር ውስጥ በጥብቅ የተገለጹ ናቸው። ግልጽ የሆነ ጽሑፍ ብቻ ሊይዙ ይችላሉ እና በተለየ መንገድ መቀረጽ አለባቸው።

አካሉ በማንኛውም ቅርፀት ውሂብ ሊይዝ ይችላል፣ እና የኤችቲቲፒ ሃይል የሚሰራበት እዚህ ነው። ግልጽ ጽሑፍ፣ ምስሎች፣ HTML እና XML በማንኛውም የሰው ቋንቋ መላክ እንደሚችሉ ያውቃሉ። በጥያቄ ሜታዳታ ወይም በተለያዩ ዩአርኤሎች፣ ለተመሳሳይ ሃብት ከተለያዩ እይታዎች መካከል መምረጥ ይችላሉ። ለምሳሌ፣ ድረ-ገጽ ወደ አሳሾች እና JSON ወደ መተግበሪያዎች መላክ ይችላሉ።

የኤችቲቲፒ ምላሽ የሰውነት ይዘት አይነት መግለጽ አለበት። ይህ በጭንቅላት ውስጥ, በሜዳ ላይ ይከናወናል የይዘት አይነት; ለምሳሌ፡-

ይዘት/አይነት፡ መተግበሪያ/json

ለቀላልነት የእኛ መተግበሪያ JSON ን ወደ ፊት እና ወደ ኋላ ይልካል፣ ነገር ግን አፕሊኬሽኑ የተነደፈው ከተለያዩ ደንበኞች ወይም የተጠቃሚ ምርጫዎች ጋር ለመላመድ የዳታ ቅርጸቱን በቀላሉ ለመቀየር በሚያስችል መንገድ መሆን አለበት።

የኤችቲቲፒ ደንበኛ ቤተ መጻሕፍት

CURL አብዛኛውን ጊዜ ለ PHP ገንቢዎች የኤችቲቲፒ መፍትሄ ነው።

በተለያዩ የጥያቄ ዘዴዎች ለመሞከር የትኛውን ዘዴ መጠቀም እንዳለቦት እንዲገልጹ የሚያስችል ደንበኛ ያስፈልግዎታል። እንደ አለመታደል ሆኖ የኤችቲኤምኤል ቅጾች GET እና POST ጥያቄዎችን ስለሚፈቅዱ ለክፍያ መጠየቂያዎች ተስማሚ አይደሉም። በእውነተኛ ህይወት፣ ኤፒአይዎች በፕሮግራማዊ መንገድ በተለየ የደንበኛ መተግበሪያ ወይም በአሳሹ ውስጥ በጃቫ ስክሪፕት በኩል ይደርሳሉ።

ለዚህ ነው፣ ከአገልጋዩ በተጨማሪ፣ በመረጡት የፕሮግራም አወጣጥ ቋንቋ ጥሩ የኤችቲቲፒ ደንበኛ ችሎታዎች መኖር አስፈላጊ የሆነው።

በጣም ታዋቂ የኤችቲቲፒ ደንበኛ ቤተ-መጽሐፍት፣ እንደገና፣ cURL ነው። በዚህ ማጠናከሪያ ትምህርት ቀደም ብሎ ከCURL ትዕዛዝ ጋር አስተዋውቀዋል። CURL ራሱን የቻለ የትዕዛዝ መስመር ፕሮግራም እና በተለያዩ የፕሮግራም አወጣጥ ቋንቋዎች ጥቅም ላይ ሊውል የሚችል ቤተ-መጽሐፍትን ያካትታል። በተለይ፣ ዩአርኤል፣ ብዙ ጊዜ፣ ለPHP ገንቢዎች ጥሩው የኤችቲቲፒ ደንበኛ መፍትሔ ነው። እንደ Python ያሉ ሌሎች ቋንቋዎች የበለጠ ቤተኛ የኤችቲቲፒ ደንበኛ ቤተመፃህፍት ይሰጣሉ።

የናሙና ማመልከቻን በማዘጋጀት ላይ

በተቻለ መጠን ዝቅተኛውን የተግባር ደረጃ ማሳየት እፈልጋለሁ።

የእኛ ምሳሌ PHP መተግበሪያ በጣም ዘንበል ያለ ነው። በተቻለ መጠን ዝቅተኛ ደረጃ ተግባራዊነትን ማጋለጥ እፈልጋለሁ፣ ያለ ምንም የአስማት አስማት። እንደ ትዊተር ያለ እውነተኛ ኤፒአይ መጠቀምም አልፈለኩም ምክንያቱም እነሱ ባልተጠበቀ ሁኔታ ሊለወጡ ስለሚችሉ፣ ጣጣ የሚሆን ማረጋገጫ ማዘጋጀት አለቦት እና አተገባበሩን መማር አይችሉም።

የናሙና አፕሊኬሽኑን ለማሄድ PHP5 እና ዌብ ሰርቨር መጫን ያስፈልግዎታል PHP ን ለማሄድ ሞተር ያለው። የ json_encode() እና json_decode() ተግባራትን ለመድረስ አሁን ያለው ስሪት ቢያንስ ስሪት 5.2 መሆን አለበት።

እንደ አገልጋዮች ፣ በጣም የተለመደው አማራጭ Apache ነው። mod_phpነገር ግን የሚመችዎትን ማንኛውንም አማራጭ መጠቀም ይችላሉ። መተግበሪያዎን በፍጥነት እንዲያዋቅሩ የሚያግዝዎ እንደገና መፃፍ ህጎችን የያዘ የ Apache ውቅር ምሳሌ አለ። ከ/ደንበኛ/ ጀምሮ ወደ ማንኛውም ዩአርኤል የሚቀርቡ ጥያቄዎች በሙሉ ወደ ፋይላችን መቅረብ አለባቸው አገልጋይ.php.

በ Apache ውስጥ ማንቃት ያስፈልግዎታል mod_ደግሞ ጻፍእና የተያያዘውን ውቅር ያስቀምጡ mod_ደግሞ ጻፍበእርስዎ Apache ውቅር ወይም በፋይልዎ ውስጥ የሆነ ቦታ .htacess. ስለዚህም አገልጋይ.phpከአገልጋዩ ለሚመጡት ጥያቄዎች ሁሉ ምላሽ ይሰጣል። በNginx ወይም ሌላ እርስዎ ለመጠቀም ከወሰኑ አገልጋይ ጋር ተመሳሳይ መሆን አለበት።

የናሙና ማመልከቻው እንዴት እንደሚሰራ

የREST ጥያቄዎችን ለማስኬድ ሁለት ቁልፎች አሉ። የመጀመሪያው ቁልፍ በኤችቲቲፒ ዘዴ ላይ በመመስረት የተለያዩ ሂደቶችን ማስጀመር ነው፣ ምንም እንኳን ዩአርኤሎች ተመሳሳይ ቢሆኑም። በ PHP ውስጥ በአለምአቀፍ ድርድር $_SERVERጥያቄውን ለማስፈጸም የትኛው ዘዴ ጥቅም ላይ እንደዋለ የሚወስን ተለዋዋጭ አለ፡-

$_SERVER["REQUEST_METHOD"]

ይህ ተለዋዋጭ እንደ "GET", "PUT" እና የመሳሰሉት የስልቱን ስም እንደ ሕብረቁምፊ ይዟል.

ሌላው ቁልፍ ምን ዩአርኤል እንደተጠየቀ ማወቅ ነው። ይህንን ለማድረግ ሌላ መደበኛ የ PHP ተለዋዋጭ እንጠቀማለን-

$_SERVER["REQUEST_URI"]

ይህ ተለዋዋጭ ከመጀመሪያው slash ጀምሮ ዩአርኤልን ይዟል። ለምሳሌ የአስተናጋጁ ስም "example.com" ከሆነ "http://example.com/" ይመለሳል "/"፣ እንደ "http://example.com/test/" ይመለሳል "/test/"።

መጀመሪያ የትኛው ዩአርኤል እንደተጠራ ለማወቅ እንሞክር። በ "ደንበኛ" የሚጀምሩ ዩአርኤሎችን ብቻ ነው የምንመለከተው። ሌሎቹ ሁሉ ልክ ያልሆኑ ናቸው።

$resource = array_shift($ዱካዎች); ከሆነ ($ መርጃ == "ደንበኞች") ( $name = array_shift ($ ዱካዎች); ከሆነ (ባዶ($ስም)) ($this->handle_base($ዘዴ);) ሌላ ($this->handle_name($ዘዴ) , $name);

ሁለት ሊሆኑ የሚችሉ ውጤቶች አሉን።

  • ሀብቱ ደንበኞች ናቸው, በዚህ ጊዜ ሙሉውን ዝርዝር እንመለሳለን
  • ሌላ መታወቂያ አለ።

ሌላ መለያ ካለ የደንበኛው ስም ነው ብለን እናስባለን እና እንደ ዘዴው እንደገና ወደ ሌላ ተግባር እናስተላልፋለን። በእውነተኛ መተግበሪያ ውስጥ መወገድ ያለበትን የመቀየሪያ መግለጫ እንጠቀማለን፡

መቀየሪያ($ዘዴ) (ጉዳይ "PUT"፡ $this->የፍጠር_ዕውቂያ($ስም)፤ ሰበር፤ መያዣ "ሰርዝ"፡ $this->ሰርዝ_ዕውቂያ($ስም)፤ እረፍት፤ መያዣ "GET"፡ $this-> display_contact ($ ስም); መግቻ: ራስጌ ("HTTP/1.1 405 አይፈቀድም");

የምላሽ ኮዶች

የኤችቲቲፒ ምላሽ ኮዶች ደንበኛው የጥያቄውን ውጤት የሚያውቅበትን መንገድ መደበኛ ያደርገዋል።

የናሙና አፕሊኬሽኑ ፒኤችፒ አርዕስት() እንደሚጠቀም አስተውለህ ሊሆን ይችላል፣ አንዳንድ እንግዳ ሕብረቁምፊዎችን እንደ ክርክሮች በማለፍ። ተግባር ራስጌ() HTTP ራስጌዎችን ያትማል እና በትክክል መቀረጻቸውን ያረጋግጣል። ራስጌዎቹ በምላሹ ቀዳሚ መሆን አለባቸው፣ ስለዚህ የራስጌዎቹን ስራ ከመጨረስዎ በፊት ሌላ ምንም ነገር አያትሙ። አንዳንድ ጊዜ የኤችቲቲፒ አገልጋይህ በኮድህ ውስጥ ከገለጽካቸው በተጨማሪ ሌሎች አርዕስቶችን ለመጨመር ሊዋቀር ይችላል።

አገልጋዩ በጣም ተገቢውን የኤችቲቲፒ ምላሽ ኮድ መመለስ አለበት; በዚህ መንገድ ደንበኛው ስህተቶቹን ለማስተካከል መሞከር ይችላል, ካለ. ብዙ ሰዎች የተለመደውን 404 Not Found የምላሽ ኮድ ጠንቅቀው ያውቃሉ፣ነገር ግን ከተለያዩ ሁኔታዎች ጋር የሚስማሙ ብዙ ተጨማሪ አሉ።

የኤችቲቲፒ ምላሽ ኮድ ትርጉም እጅግ በጣም ትክክለኛ እንዳልሆነ ያስታውሱ; ይህ ኤችቲቲፒ ራሱ ሙሉ በሙሉ አጠቃላይ የመሆኑ ውጤት ነው። ከሁኔታው ጋር በጣም የሚዛመድ የምላሽ ኮድ ለማግኘት መሞከር አለብዎት። ነገር ግን ትክክለኛ ተዛማጅ ማግኘት ካልቻሉ በጣም አይጨነቁ።

ከREST ጋር ብዙ ጊዜ ጥቅም ላይ የሚውሉ አንዳንድ የኤችቲቲፒ ምላሽ ኮዶች እዚህ አሉ።

200 እሺ

ይህ የምላሽ ኮድ ጥያቄው የተሳካ እንደነበር ያሳያል።

201 ተፈጠረ

ይህ ማለት ጥያቄው የተሳካ ነበር እና ሀብቱ ተፈጥሯል ማለት ነው። የPUT ወይም POST ጥያቄ የተሳካ ከሆነ ጥቅም ላይ ይውላል።

400 መጥፎ ጥያቄ

ጥያቄው ጠፋ። ይህ የሚሆነው በተለይ በPOST እና PUT ጥያቄዎች ውሂቡ ካልተረጋገጠ ወይም የተሳሳተ ቅርጸት ሲኖር ነው።

404 አልተገኘም።

ይህ ምላሽ የሚፈለገው ሃብት እንዳልተገኘ ያሳያል። በተለምዶ ይህ ወደ ዩአርኤል የሚጠቁሙ ሁሉንም ጥያቄዎች ያለ ተዛማጅ መገልገያ ይመለከታል።

401 ያልተፈቀደ

ይህ ስህተት ማለት ሀብቱን ከመድረስዎ በፊት ማረጋገጥ ያስፈልግዎታል ማለት ነው።

405 ዘዴ አይፈቀድም

ለዚህ ሃብት ጥቅም ላይ የዋለው የኤችቲቲፒ ዘዴ አይደገፍም።

409 ግጭት

ይህ ግጭትን ያመለክታል. ለምሳሌ፣ ተመሳሳዩን ምንጭ ሁለት ጊዜ ለመፍጠር የPUT ጥያቄን ይጠቀማሉ።

500 የውስጥ አገልጋይ ስህተት

ሁሉም ነገር ሳይሳካ ሲቀር; በተለምዶ የ 500 ምላሾች በአገልጋዩ በኩል ባልተጠበቁ ሁኔታዎች ምክንያት ማቀናበር ሳይሳካ ሲቀር የአገልጋይ ስህተት ይፈጥራል።

የናሙና መተግበሪያን በማሄድ ላይ

በቀላሉ መረጃን ከመተግበሪያው በማውጣት እንጀምር። የደንበኛ ዝርዝሮችን እንፈልጋለን፣ "jim"፣ስለዚህ ቀላል የGET ጥያቄ ወደዚህ መገልገያ URL እንልካ።

Curl -v http://localhost:80/clients/jim

ይህ ሙሉ የራስጌ መልዕክቶችን ያሳያል። የምላሹ የመጨረሻው መስመር የመልእክቱ አካል ይሆናል; በዚህ አጋጣሚ የጂም አድራሻን የያዘ JSON ይሆናል (የዘዴውን ስም መተው የGET ጥያቄ እንደሚያስከትል እና በተጨማሪ localhost:80 በምትጠቀመው የአገልጋይ ስም እና ወደብ መተካት)።

ከዚያ ለሁሉም ደንበኞች መረጃን በአንድ ጊዜ ማምጣት እንችላለን፡-

Curl -v http://localhost:80/ደንበኞች/

ጳውሎስ የሚባል አዲስ ደንበኛ ለመፍጠር...

Curl -v -X PUT http://localhost:80/clients/paul -d "("አድራሻ":"Sunset Boulevard" )

እና እንደ ማረጋገጫ ጳውሎስን የያዙ የሁሉም ደንበኞች ዝርዝር ይደርስዎታል።

በመጨረሻም ደንበኛን ለማስወገድ፡-

Curl -v -X ሰርዝ http://localhost:80/clients/anne

የተመለሰው JSON ከአሁን በኋላ ስለ አን ምንም አይነት መረጃ እንዳልያዘ ታገኛለህ።

የማይገኝ ደንበኛ ለማግኘት እየሞከሩ ከሆነ፣ ለምሳሌ፡-

Curl -v http://localhost:80/clients/jerry

ቀድሞውንም ደንበኛ ለመፍጠር ሲሞክሩ 404 ስህተት ይደርስዎታል፡-

curl -v -X PUT http://localhost:80/ደንበኞች/አን

በምትኩ 409 ስህተት ታገኛለህ።

ማጠቃለያ

በአጠቃላይ፣ ከኤችቲቲፒ ውጭ የምታደርጋቸው ጥቂት ግምቶች፣ የተሻለ ይሆናል።

ኤችቲቲፒ የተነደፈው ከፕሮቶኮሉ ግንዛቤ ውጭ ምንም የሚያመሳስላቸው ነገር በሌላቸው ስርዓቶች መካከል ለመነጋገር መሆኑን ማስታወስ ጠቃሚ ነው። በአጠቃላይ፣ ከኤችቲቲፒ ውጭ የምታደርጋቸው ጥቂት ግምቶች፣ የተሻለ ይሆናል፡ ሰፋ ያሉ ፕሮግራሞችን እና መሳሪያዎች የእርስዎን ኤፒአይ እንዲደርሱበት ያስችላል።

በዚህ ማጠናከሪያ ትምህርት ውስጥ ፒኤችፒን የተጠቀምኩበት ምክኒያት ለኔትቱትስ+ አንባቢዎች በጣም የተለመደው ቋንቋ ሊሆን ይችላል። ሆኖም፣ ፒኤችፒ ምንም እንኳን ለድር የተነደፈ ቢሆንም፣ የPUT ጥያቄዎችን ከGET እና POST በተለየ መልኩ ስለሚያስተናግድ ምናልባት በ RESTful መንገድ አብሮ ለመስራት ምርጡ ቋንቋ ላይሆን ይችላል።

ከ PHP በተጨማሪ የሚከተሉትን ነገሮች ግምት ውስጥ ማስገባት ይፈልጉ ይሆናል፡-

  • የተለያዩ የሩቢ ማዕቀፎች (ሀዲድ እና ሲናትራ)
  • Python ለ REST ትልቅ ድጋፍ አለው። Plain Django እና WebOb፣ ወይም Werkzeug መስራት አለባቸው።
  • node.js REST ን በደንብ ይደግፋል

የREST መርሆዎችን ለማክበር ከሚሞክሩ መተግበሪያዎች መካከል፣ ምንም እንኳን በተግባር ብዙ ጊዜ ጥቅም ላይ ባይውልም የተለመደው ምሳሌ የአቶም ህትመት ፕሮቶኮል ነው። ኤችቲቲፒን ሙሉ ለሙሉ የመጠቀም ፍልስፍናን መሰረት ያደረገ ዘመናዊ መተግበሪያ ለማግኘት ከ Apache CouchDB በላይ አይመልከቱ።

612

HTTP PUT

PUT ፋይል ወይም መርጃ በአንድ የተወሰነ ዩአርአይ ላይ ያስቀምጣል፣ እና በዚያ URI ላይ ነው። በዚህ ዩአርአይ ውስጥ አስቀድሞ ፋይል ወይም ግብዓት ካለ PUT ያንን ፋይል ወይም ሃብት ይተካዋል። እዚያ ምንም ፋይል ወይም ምንጭ ከሌለ, PUT አንድ ይፈጥራል. PUT ኃይለኛ ነው፣ ነገር ግን በአያዎአዊ መልኩ፣ የPUT ምላሾች መሸጎጫ አይደሉም።

HTTP POST

POST ውሂብን ወደ አንድ የተወሰነ URI ይልካል እና ጥያቄውን ለማስኬድ በዚያ URI ላይ ምንጭን ይጠብቃል። በዚህ ነጥብ ላይ ያለው የድር አገልጋይ በተጠቀሰው ሀብት አውድ ውስጥ ከውሂቡ ጋር ምን ማድረግ እንዳለበት ሊወስን ይችላል. የPOST ዘዴ ኃይለኛ አይደለም ነገር ግን የPOST ምላሾች ናቸው። : አገልጋዩ ተገቢውን መሸጎጫ-መቆጣጠሪያ ካዘጋጀ እና ጊዜው ካለፈ ራስጌዎች ተደብቀዋል።

ኦፊሴላዊው HTTP RFC POSTን እንደሚከተለው ይገልፃል፡-

  • የነባር ሀብቶች ማጠቃለያ;
  • መልእክት ወደ ማስታወቂያ ሰሌዳ፣ የዜና ቡድን፣ የደብዳቤ መላኪያ ዝርዝር ወይም ተመሳሳይ የጽሁፎች ቡድን መለጠፍ፤
  • እንደ ቅጽ ማስረከቢያ ውጤት ለመረጃ ሂደት ሂደት የውሂብ እገዳን መስጠት;
  • አባሪ ክዋኔን በመጠቀም የውሂብ ጎታ ማስፋፋት።

በPOST እና PUT መካከል ያለው ልዩነት፡-

አርኤፍሲ ራሱ የከርነል ልዩነትን ያብራራል፡-

በPOST እና PUT ጥያቄዎች መካከል ያለው መሠረታዊ ልዩነት በተለያየ የጥያቄ-URI እሴት ላይ ተንጸባርቋል። በPOST ጥያቄ ውስጥ ያለው URI የተዘጋውን ነገር የሚያስኬድበትን ግብአት ይለያል። ይህ ግብአት መረጃውን የመቀበል ሂደት፣ የሌላ ፕሮቶኮል መግቢያ ወይም የተለየ ማብራሪያዎችን የሚቀበል አካል ሊሆን ይችላል። በአንጻሩ፣ በPUT ጥያቄ ውስጥ ያለው ዩአርአይ በጥያቄው ውስጥ የተካተተውን አካል ይለያል - የተጠቃሚው ወኪሉ ዩአርአይ የታሰበ መሆኑን ያውቃል እና አገልጋዩ ጥያቄውን ለሌላ ምንጭ ለማመልከት መሞከር የለበትም። አገልጋዩ ጥያቄው በተለየ ዩአርአይ ላይ እንዲተገበር ከፈለገ፣ 301 (የቀጠለ የማያቋርጥ) ምላሽ መላክ አለበት፤ የተጠቃሚ ወኪሉ ጥያቄውን ወደ ሌላ አቅጣጫ ለመቀየር ወይም ላለማዞር የራሱን ውሳኔ ሊያደርግ ይችላል።

ትክክለኛውን ዘዴ በመጠቀም ያልተዛመደ ወደ ጎን;

POST ሃብትን ለመፍጠር እና PUT ለማዘመን/ለመቀየር ጥቅም ላይ ይውላል በሚለው በድር ገንቢዎች መካከል ባለው ታዋቂ የተሳሳተ ግንዛቤ ከቅርብ ጊዜ ወዲህ ተበሳጨሁ።

የ RFC 2616 ገጽ 55 ("HyperText Transfer Protocol - HTTP/1.1") ክፍል 9.6 ("PUT") ከተመለከቱ PUT በትክክል ለ:

የPUT ዘዴ አንድ የግል ነገር በተጠየቀው Request-URI ውስጥ እንዲከማች ይጠይቃል።

በPOST እና PUT መካከል ያለውን ልዩነት ለማብራራት አንድ ጠቃሚ ነጥብም አለ፡-

በPOST እና PUT ጥያቄዎች መካከል ያለው መሠረታዊ ልዩነት በተለያየ የጥያቄ-URI እሴት ላይ ተንጸባርቋል። በPOST ጥያቄ ውስጥ ያለው URI የተዘጋውን ነገር የሚያስኬድበትን ግብአት ይለያል። ይህ ሃብት የውሂብ መቀበል ሂደት፣ የሌላ ፕሮቶኮል መግቢያ ወይም የተለየ ማብራሪያዎችን የሚቀበል አካል ሊሆን ይችላል። በአንጻሩ፣ በPUT ጥያቄ ውስጥ ያለው ዩአርአይ በጥያቄው የተዘጋውን አካል ይለያል - የተጠቃሚው ወኪሉ ዩአርአይ ምን እንደሆነ ያውቃል፣ እና አገልጋዩ ጥያቄውን ወደ ሌላ ምንጭ ለመተግበር መሞከር የለበትም።

ስለ ማሻሻያው/ልዩነት መፍጠር ምንም አይናገርም, ምክንያቱም እሱ ስለ እሱ አይደለም. በዚህ መካከል ስላለው ልዩነት ነው፡-

Obj.set_ባህሪ(ዋጋ) # የPOST ጥያቄ።

Obj.attribute = ዋጋ # የPUT ጥያቄ።

ስለዚህ እባኮትን ይህን የህዝብ የተሳሳተ አስተሳሰብ ማሰራጨቱን አቁሙ። የእርስዎን RFCs ያንብቡ።

9

ባለጌ እና ፔዳንቲክ ብዙም ጥቅም የሌለው ይመስላል። በጠቀሱት የPUT ምሳሌ፣ በ RESTful api ውስጥ ያለው አዲሱ ነገር የ"አዲስ" ግቤት ሲሆን በዚያ ቦታ ይገኛል። ንዑስ ዓይነቶች እንደዚህ እንዲሆኑ መፍቀድ ጥሩ የንድፍ ምርጫ ስለመሆኑ ምንም ጥያቄ የለውም (ይህ ተስማሚ አይደለም ብዬ አስባለሁ) ነገር ግን የበለጠ ጠቃሚ መረጃን ለማጥቃት ንዑስ ዓይነት ቢጠቀሙም እንኳ። በአብዛኛዎቹ ሁኔታዎች, መግለጫው ብዙውን ጊዜ የ RFC ይዘት, ማጠቃለያ እና የተለመደ እና የልማዳዊ አሰራር መግለጫ ነው ይባላል. በተጨማሪም ፣ ጨዋ መሆን አይጎዳዎትም። - መሣሪያ ሰጪ 06 ኤፕሪል 15 2015-04-06 23:49:56

60

1) ያግኙ: - ደንበኛ ከድር አገልጋይ ምንጭ ሲጠይቅ ጥቅም ላይ ይውላል።

2) ራስ: - ደንበኛው ስለ ሀብት አንዳንድ መረጃ ሲጠይቅ ጥቅም ላይ ይውላል, ነገር ግን ሀብቱን ራሱ አይጠይቅም.

3) POST: - ደንበኛ መረጃን ወይም ዳታ ወደ ሰርቨር ሲልክ ጥቅም ላይ ይውላል፣ ለምሳሌ የመስመር ላይ ፎርም በመሙላት (ማለትም ከፍተኛ መጠን ያለው ውስብስብ ውሂብ ወደ ድር አገልጋይ ይልካል)።

4) PUT: - ደንበኛው ምትክ ሰነድ ሲልክ ወይም አዲስ ሰነድ በጥያቄው URL ስር ወደ ድር አገልጋይ ሲሰቅል ያገለግላል።

5) ሰርዝ፡ - ደንበኛው በጥያቄው URL የተገለጸውን ሰነድ ከድር አገልጋይ ላይ ለመሰረዝ ሲሞክር ጥቅም ላይ ይውላል።

6) መከታተያ፡ - ደንበኛ ተኪዎችን ወይም እራሱን ለማስተዋወቅ ጥያቄውን የሚያስተካክል መካከለኛ አገልጋይ ሲጠይቅ ጥቅም ላይ ይውላል።

7) አማራጮች፡ - ደንበኛው በድር ሰርቨር ላይ ሰነዱን ለማውጣት ወይም ለመስራት ሌሎች ያሉትን ዘዴዎች ለመግለጽ ሲፈልግ ጥቅም ላይ ይውላል።

8) ማገናኘት፡ - ደንበኛ ከርቀት አስተናጋጅ ጋር ግልጽ ግንኙነት ለመፍጠር በሚፈልግበት ጊዜ ጥቅም ላይ የሚውለው፣በተለይ በኤስኤስኤል የተመሰጠረ ግንኙነት (ኤችቲቲፒኤስ) በኤችቲቲፒ ፕሮክሲ በኩል ለማቅረብ ነው።

15

  • ሰርዝ፡ ከአገልጋዩ ላይ መረጃን ይሰርዛል።
  • TRACE፡ የትኛው አገልጋይ እየተቀበለ እንደሆነ ለመፈተሽ መንገድ ያቀርባል። በቀላሉ የተላከውን ይመልሳል።
  • አማራጮች፡ ደንበኛው በአገልግሎቱ ስለሚደገፉ የጥያቄ ዘዴዎች መረጃ እንዲያገኝ ያስችለዋል። ተጓዳኝ የምላሽ ራስጌ ከሚደገፉ ዘዴዎች ጋር "ፍቀድ" ነው። እንዲሁም በCORS ውስጥ ስለ ትክክለኛው የጥያቄ ዘዴ ለአገልጋዩ ለማሳወቅ እና ስለ ብጁ ራስጌዎች ለመጠየቅ እንደ ቅድመ በረራ ጥያቄ ጥቅም ላይ ይውላል።
  • ራስ፡ የምላሽ ራስጌዎችን ብቻ ይመልሳል።
  • አገናኝ፡ አሳሹ ከፕሮክሲ ጋር መነጋገሩን ሲያውቅ ጥቅም ላይ ይውላል እና የመጨረሻው ዩአርአይ በ https:// ይጀምራል። የግንኙነት አላማ ከጫፍ እስከ ጫፍ የተመሰጠረ TLS ክፍለ ጊዜ መፍቀድ ነው ስለዚህ ውሂቡ ለፕሮክሲው እንዳይነበብ።