Chapisho hili ni jibu la swali lililoulizwa katika maoni kwa moja ya nakala zangu.
Katika nakala hii nataka kukuambia ni njia gani za HTTP GET/POST/PUT/DELETE na zingine ni kwanini zilivumbuliwa na jinsi ya kuzitumia kwa mujibu wa REST.
HTTP
Kwa hiyo, ni ipi mojawapo ya itifaki kuu za mtandao? Nitatuma pedants kwa RFC2616, na nitawaambia wengine kibinadamu :)Itifaki hii inaelezea mwingiliano kati ya kompyuta mbili (mteja na seva), iliyojengwa kwa msingi wa ujumbe unaoitwa ombi (Ombi) na majibu (Majibu). Kila ujumbe una sehemu tatu: mstari wa kuanzia, vichwa na mwili. Katika kesi hii, mstari wa kuanzia tu unahitajika.
Mistari ya kuanzia ya ombi na majibu ina fomati tofauti - tunavutiwa tu na safu ya kuanzia ya ombi, ambayo inaonekana kama hii:
NJIA URI HTTP/ VERSION ,
Ambapo METHOD ni mbinu ya ombi la HTTP, URI ni kitambulisho cha rasilimali, VERSION ni toleo la itifaki (toleo la 1.1 kwa sasa ni la sasa).
Vijajuu ni mkusanyiko wa jozi za thamani ya jina zilizotenganishwa na koloni. Vichwa vya habari vinatoa habari mbalimbali za huduma: encoding ya ujumbe, jina la kivinjari na toleo, anwani ambayo mteja alikuja (Referrer), na kadhalika.
Mwili wa ujumbe ni data halisi inayopitishwa. Katika jibu, data iliyopitishwa kawaida ni ukurasa wa HTML ambao kivinjari kiliomba, na katika ombi, kwa mfano, katika mwili wa ujumbe, yaliyomo kwenye faili zilizopakiwa kwenye seva hupitishwa. Lakini kama sheria, hakuna mwili wa ujumbe katika ombi hata kidogo.
Mfano wa Mwingiliano wa HTTP
Hebu tuangalie mfano.Ombi:
PATA /index.php HTTP/1.1 Mpangishi: example.com Wakala wa Mtumiaji: Mozilla/5.0 (X11; U; Linux i686; ru; rv:1.9b5) Gecko/2008050509 Firefox/3.0b5 Kubali: maandishi/html Muunganisho: funga
Mstari wa kwanza ni mstari wa hoja, iliyobaki ni vichwa; mwili wa ujumbe haupo
Jibu:
HTTP/1.0 200 Sawa Seva: nginx/0.6.31 Lugha-ya Maudhui: ru Aina ya Maudhui: maandishi/html; charset=utf-8 Urefu wa Maudhui: 1234 Muunganisho: funga ... UKURASA WA HTML WENYEWE...
Rasilimali na Mbinu
Wacha turudi kwenye safu ya kuanzia ya ombi na tukumbuke kuwa ina parameta kama URI. Hii inawakilisha Kitambulisho cha Rasilimali Sawa - kitambulisho sare cha rasilimali. Rasilimali ni, kama sheria, faili kwenye seva (mfano URI katika kesi hii ni "/styles.css"), lakini kwa ujumla rasilimali inaweza pia kuwa kitu cha kufikirika ("/blogs/webdev/" - pointi. kwa ukuzaji wa kizuizi cha "Wavuti" badala ya kwenye faili maalum).Aina ya ombi la HTTP (pia huitwa mbinu ya HTTP) huambia seva ni hatua gani tunataka kutekeleza kwenye rasilimali. Hapo awali (mapema miaka ya 90) ilichukuliwa kuwa mteja anaweza kutaka kitu kimoja tu kutoka kwa rasilimali - kuipokea, lakini sasa kwa kutumia itifaki ya HTTP unaweza kuunda machapisho, kuhariri wasifu, kufuta ujumbe na mengi zaidi. Na vitendo hivi ni vigumu kuchanganya na neno "risiti".
Ili kutofautisha vitendo kutoka kwa rasilimali katika kiwango cha njia za HTTP, chaguzi zifuatazo ziligunduliwa:
- PATA - kupata rasilimali
- POST - uundaji wa rasilimali
- PUT - sasisho la rasilimali
- FUTA - ufutaji wa rasilimali
REST inatumika
REST (Representational State Transfer) ni neno lililoanzishwa mwaka wa 2000 na Roy Fielding, mmoja wa wasanidi wa itifaki ya HTTP, kama jina la kikundi cha kanuni za kuunda programu za wavuti. Kwa ujumla, REST inashughulikia eneo pana zaidi kuliko HTTP - inaweza pia kutumika katika mitandao mingine na itifaki zingine. REST inaeleza kanuni za mwingiliano kati ya mteja na seva, kwa kuzingatia dhana za "rasilimali" na "kitenzi" (kinaweza kueleweka kama kiima na kiima). Kwa upande wa HTTP, rasilimali inatambuliwa na URI yake, na kitenzi ni mbinu ya HTTP.REST inapendekeza kuachana na matumizi ya URI sawa kwa rasilimali tofauti (yaani, anwani za vifungu viwili tofauti kama /index.php?article_id=10 na /index.php?article_id=20 - hii sio njia ya REST) na kutumia mbinu tofauti za HTTP kwa vitendo tofauti. Hiyo ni, programu ya wavuti iliyoandikwa kwa kutumia mbinu ya REST itafuta rasilimali wakati wa kuipata kwa njia ya HTTP DELETE (bila shaka, hii haina maana kwamba ni muhimu kutoa fursa ya kufuta kila kitu na kila mtu, lakini yoyote ombi la kufuta la programu lazima litumie mbinu ya HTTP DELETE).
REST huwapa watayarishaji programu uwezo wa kuandika programu za wavuti zilizosanifiwa na maridadi zaidi kuliko hapo awali. Kwa kutumia REST, URI ya kuongeza mtumiaji mpya haitakuwa /user.php?action=create (njia ya GET/POST), lakini kwa urahisi /user.php (njia ya POST kabisa).
Kama matokeo, kwa kuchanganya vipimo vya HTTP vilivyopo na mbinu ya REST, mbinu mbalimbali za HTTP hatimaye zinaeleweka. GET - inarudisha rasilimali, POST - inaunda mpya, PUT - inasasisha iliyopo, FUTA - inaifuta.
Matatizo?
Ndio, kuna shida ndogo ya kutumia REST katika mazoezi. Tatizo hili linaitwa HTML.Maombi ya PUT/DELETE yanaweza kutumwa kwa kutumia XMLHttpRequest, kwa kuwasiliana na seva mwenyewe (sema, kupitia curl au hata kupitia telnet), lakini huwezi kutengeneza fomu ya HTML inayotuma ombi kamili la PUT/DELETE.
Jambo ni kwamba, maelezo ya HTML hayakuruhusu kuunda fomu zinazowasilisha data isipokuwa kupitia GET au POST. Kwa hiyo, kufanya kazi kwa kawaida na njia nyingine, unapaswa kuwaiga kwa njia ya bandia. Kwa mfano, katika Rack (utaratibu kwa msingi ambao Ruby huingiliana na seva ya wavuti; Reli, Merb na mifumo mingine ya Ruby hufanywa kwa kutumia Rack), unaweza kuongeza uwanja uliofichwa kwa fomu na jina "_method", na taja jina la njia kama thamani (kwa mfano, "PUT") - katika kesi hii, ombi la POST litatumwa, lakini Rack itaweza kujifanya kuwa imepokea PUT badala ya POST.
Mbinu za GET na POST katika HTTP na HTTPS ndizo njia mbili maarufu zaidi zinazotumiwa kuhamisha data kutoka kwa mteja hadi seva kwa kutumia HTTP (Itifaki ya Uhamisho ya HyperText). GET na POST zote zinaweza kutumika kutuma ombi na kupokea jibu, lakini kuna tofauti kubwa kati yao.
Tofauti kati ya maombi ya GET na POST katika HTTP au HTTPS ni swali maarufu katika kila mahojiano ya programu ya wavuti. Kwa kuwa HTML haitegemei teknolojia ya seva ya wavuti kama vile Java, ASP au PHP na HTTP ndiyo itifaki kuu katika nafasi ya mtandao, umuhimu wa kuelewa mbinu za GET na POST hauwezi kupuuzwa waziwazi. Katika makala haya, tutaangalia njia ya HTTP GET ni nini, njia ya HTTP POST ni nini, wakati wa kutumia kila ombi, na ni tofauti gani kati yao. Wacha tuangalie kila dhana tofauti.
HTML ni nini?
HTML ni lugha inayotumika kuunda kurasa za wavuti. Hypertext inarejelea viungo ambavyo ukurasa wa HTML unaweza kuwa nao. Lugha ya alama hurejelea jinsi lebo hutumika kufafanua mpangilio wa ukurasa na vipengele kwenye ukurasa.
Ufuatao ni mfano wa HTML unaotumika kufafanua ukurasa msingi wa wavuti wenye kichwa na aya moja ya maandishi:
<Голова>
<Название>TechTerms.com название>
HEAD>
<Тело>
Huu ni mfano wa aya katika HTML. p>
Body>
Html>
Mstari wa kwanza unabainisha aina ya maudhui yaliyomo kwenye hati.,
Na , ambayo yote yamejumuishwa katika mfano hapo juu. Kichwa cha ukurasa, metadata na viungo vya faili za nanga huwekwa kati ya maudhui halisi ya ukurasa huwekwa kati ya lebo. .Wavuti imepitia mabadiliko mengi katika miongo michache iliyopita, lakini HTML imekuwa lugha ya msingi inayotumiwa kuunda kurasa za wavuti. Inafurahisha, wakati tovuti zimekuwa za juu zaidi na zinazoingiliana, HTML imekuwa rahisi. Ukilinganisha chanzo cha ukurasa wa HTML5 na ukurasa sawa ulioandikwa katika HTML 4.01 au XHTML 1.0, ukurasa wa HTML5 utakuwa na msimbo mdogo. Hii ni kwa sababu HTML ya kisasa inategemea Laha za Mtindo wa Kuachia au JavaScript kufomati karibu vipengele vyote ndani ya ukurasa.
Tovuti nyingi zinazobadilika hutengeneza kurasa za wavuti kwa haraka kwa kutumia lugha ya uandishi ya upande wa seva kama vile PHP au ASP. Hata hivyo, hata kurasa zinazobadilika lazima ziungwe kwa kutumia HTML. Kwa hivyo, lugha za uandishi mara nyingi hutoa nambari ya HTML inayotumwa kwa kivinjari cha wavuti.
Itifaki ya Uhawilishaji Maandishi ya HTTP imeundwa kwa ajili ya mawasiliano kati ya wateja na seva na inafanya kazi kama itifaki ya jibu la ombi.
Kivinjari cha wavuti kinaweza kuwa mteja, na programu kwenye kompyuta inayokaribisha tovuti inaweza kuwa seva.
Mteja (kivinjari) hutuma ombi la HTTP kwa seva, seva inarudi jibu ambalo lina habari kuhusu hali ya ombi na inaweza pia kuwa na maudhui yaliyoombwa.
Njia mbili za ombi GET na POST
Njia mbili zinazotumiwa sana za kujibu ombi kati ya mteja na seva ni:
GET - inaomba data kutoka kwa rasilimali maalum;
POST - hutuma data ili kuchakatwa kwa rasilimali maalum.
Tafsiri ya GET na POST ina maana halisi ya kupokea na baada ya kuchakata.
Zaidi kuhusu HTTP
HTTP ni itifaki inayotumika kusambaza data kupitia mtandao. Ni sehemu ya safu ya Itifaki ya Mtandao na inafafanua amri na huduma zinazotumiwa kusambaza data ya ukurasa wa wavuti.
HTTP hutumia modeli ya mteja wa seva. Mteja anaweza kuwa kompyuta ya nyumbani, kompyuta ndogo, au kifaa cha rununu. Seva ya HTTP kwa kawaida ni mwenyeji wa wavuti inayoendesha programu ya seva ya wavuti kama vile Apache au IIS. Mtumiaji anapofikia tovuti, kivinjari hutuma ombi kwa seva inayofaa ya wavuti na hujibu kwa msimbo wa hali ya HTTP. Ikiwa URL ni halali na muunganisho umekubaliwa, seva itatuma ukurasa wa wavuti na faili zinazohusiana kwa kivinjari.
Nambari za kawaida za hali ya HTTP ni pamoja na:
200 - ombi lililofanikiwa (ukurasa wa wavuti upo);
301 - Husogea kila mara (mara kwa mara huelekezwa upya kwa URL mpya);
401 - ombi lisiloidhinishwa (idhini inahitajika);
500 - Hitilafu ya seva ya ndani (mara nyingi husababishwa na usanidi usio sahihi wa seva).
POST na GET katika HTTP
HTTP inafafanua amri za GET na POST ambazo hutumika kuchakata mawasilisho ya fomu kwenye tovuti. Amri ya CONNECT inatumika kuwezesha muunganisho salama ambao umesimbwa kwa njia fiche kwa kutumia SSL. Miunganisho ya HTTP iliyosimbwa kwa njia fiche hutokea kupitia HTTPS, kiendelezi cha HTTP iliyoundwa kwa ajili ya uhamishaji salama wa data.
URL zinazoanza na "http://" zinaweza kufikiwa kupitia itifaki za kawaida za uhamishaji matini na kwa chaguo-msingi hutumia lango 80. URL zinazoanza na "https://" zinaweza kufikiwa kupitia muunganisho salama wa HTTPS na mara nyingi hutumia mlango wa 443.
POST
POST ni mfululizo wa majaribio ya mfumo unaofanywa na kompyuta na vifaa vingine vya kielektroniki vinapowashwa. Matokeo ya majaribio yanaweza kuonyeshwa kwenye skrini, kuonyeshwa kupitia taa zinazomulika LED, au kurekodiwa tu ndani. Katika mifumo ya kompyuta, operesheni ya POST inafanywa mwanzoni mwa mlolongo wa boot. Majaribio yote yakipita, mchakato uliosalia wa uanzishaji utaendelea kiotomatiki.
Mifumo ya uendeshaji ya vifaa vya Mac na Windows huendesha POST kila wakati kompyuta inapowasha au kuwasha upya. Uchanganuzi hukagua maunzi na kuhakikisha kuwa kichakataji, RAM, na vifaa vya kuhifadhi vinafanya kazi ipasavyo. Ikiwa hitilafu hutokea wakati wa POST, mchakato wa kuanza unaweza kusitisha au kuacha kabisa, na ujumbe unaweza kuonekana kwenye kufuatilia.Kwenye PC, makosa ya POST mara nyingi huonekana kwenye skrini ya habari ya BIOS. Zinaweza kuonekana kama misimbo ya kriptografia kama vile "08" au kama ujumbe wa mfumo kama vile "Hitilafu ya kurekebisha kumbukumbu ya mfumo." Kwenye Mac, makosa ya POST mara nyingi huonyeshwa na mchoro rahisi, kama vile ikoni ya folda iliyovunjika, ambayo inaonyesha kuwa kifaa cha kuwasha hakikupatikana.
Maonyesho ya kimwili
Katika baadhi ya matukio, skrini ya kompyuta inaweza hata kuwasha kabla ya hitilafu za POST. Hili likitokea, misimbo ya hitilafu inaweza kuonyeshwa kupitia taa za LED zinazomulika au milio. Kwa mfano, Apple iMac itacheza tani tatu mfululizo, sitisha kwa sekunde tano, na kisha kurudia tani wakati RAM mbaya imegunduliwa wakati wa kuanza. Kompyuta nyingi pia hulia wakati hitilafu za POST zinapogunduliwa, ingawa kila mtengenezaji hutumia misimbo yake.
POST ni neno la kiufundi ambalo mafundi wa kompyuta pekee hutumia mara kwa mara. Hata hivyo, ni kifupi kizuri kwa sababu hukusaidia kuelewa vyema ujumbe wa hitilafu ambao unaweza kuonekana kwenye kompyuta au vifaa vingine vya kielektroniki. Ikiwa kompyuta yako haitaanza kwa sababu ya hitilafu ya POST, unaweza kutumia kifaa kingine kupata maana na sababu ya hitilafu kutoka kwa tovuti ya mtengenezaji. Kisha unaweza kuchukua hatua inayofaa - kuondoa moduli ya kumbukumbu au kuweka tena kadi ya video na kisha kuanzisha upya vifaa.
PATA
POST pia ni mbinu ya kupitisha vigeu vya fomu za HTML kutoka ukurasa mmoja wa wavuti hadi mwingine bila kuvionyesha kwenye upau wa anwani. Njia mbadala ni GET, ambayo huongeza maadili kwa URL. Maombi ya HTTP POST hutoa data ya ziada kutoka kwa mteja (kivinjari) hadi kwa seva katika mwili wa ujumbe. Kinyume chake, maombi ya GET yanajumuisha data yote inayohitajika katika URL. Fomu katika HTML zinaweza kutumia mbinu yoyote kwa kubainisha method=POST au method=GET (chaguo-msingi) kwenye kipengele