Olet ehkä kuullut GET- ja POST-pyynnöistä, mutta ne ovat vasta alkua.

Jokainen HTTP-pyyntö käyttää menetelmää sen keskeisen tarkoituksen kuvaamiseen. Jokaisella menetelmällä on erityisiä käyttötarkoituksia tehtäviin, jotka vaihtelevat verkkosivun hakemisesta resurssin poistamiseen. GET ja POST ovat kaksi tutuinta, mutta on seitsemän muuta.

Opi tästä konseptista ja siitä, mihin kukin yhdeksästä mahdollisesta HTTP-menetelmästä on tarkoitettu.

Mikä on HTTP-menetelmä?

Jokainen tekemäsi HTTP-pyyntö sisältää toiminnon ja kohteen kyseiselle toiminnolle, aivan kuten verbi ja substantiivi, joka toimii objektina.

URL-osoite tunnistaa yksilöllisen resurssin, joka toimii pyynnön kohteena. Samaan aikaan verbiä – mitä toimintoa kyseiselle URL-osoitteelle tulee suorittaa – edustaa menetelmä.

HTTP-pyynnön ensimmäinen rivi sisältää tärkeimmät tiedot, mukaan lukien HTTP-version, resurssin URL-osoitteen ja pyyntömenetelmän:

HAE /software/htp/cics/index.html HTTP/1.1

Mitä ovat 9 HTTP-menetelmää?

Ensimmäiset neljä menetelmää vastaavat neljää CRUD-mallin toimintoa: Luo, Lue, Päivitä ja Poista. Vastaavat HTTP-menetelmät ovat

LÄHETTÄÄ, SAADA, LAITTAA, ja POISTAA.

SAADA

Yleisin oletuspyyntö, jonka lähetät, kun selaat verkkoa ja napsautat linkkejä tai pyydät tietoja API: n kautta. Palvelimen tulee palauttaa resurssi vastauksessaan.

LÄHETTÄÄ

Käytä POST-komentoa uusien resurssien luomiseen, varsinkin kun näillä resursseilla on tunnistettavissa oleva pääresurssi. Jos sinulla on esimerkiksi /clients-resurssi, sinun tulee luoda uusi asiakas lähettämällä tarvittavat tiedot /clients-kansioon.

LAITTAA

Päivitä tai vaihda olemassa oleva resurssi. Tämä on samanlainen kuin POST, mutta asiakas on vastuussa yksilöllisen tunnisteen valitsemisesta resurssille. Jos haluat luoda resurssin käyttämällä PUT: ta, resurssin URL-osoitteen tulee sisältää tunniste, esimerkiksi /clients/007.

POISTAA

Käytä tätä menetelmää URL-osoitteessa määrittämäsi resurssin poistamiseen. Kuten kaikki HTTP-menetelmät, tuki on palvelimella. Se voi antaa kenen tahansa poistaa resurssin, vaikka se olisi selvästi riskialtista. DELETE-toimintoa tukeva palvelin yleensä vaatii todennus ja valtuutus.

Kaksi muuta menetelmää tarjoavat pieniä eroja yllä olevaan: PISTERI ja PÄÄ. Ne saattavat olla hyödyllisiä, kun käytät tiettyjä sovellusliittymiä tai rakennat omia.

PISTERI

PATCH-menetelmä päivittää olemassa olevan resurssin vain osittaisilla tiedoilla. Toisin sanoen, sinun ei tarvitse toimittaa täyttä esitystä uudesta resurssista, vain kentät, jotka sinun on päivitettävä.

PÄÄ

HEAD-pyyntö on tarkoitettu, kun haluat tietoja resurssista, mutta et itse resurssista. Vastaus ei sisällä tekstiä, mutta se sisältää joukon hyödyllisiä HTTP-otsikoita. Voit selvittää tiedoston kokonaiskoon ennen sen lataamista Content-Length -vastausotsikon kautta.

Loput menetelmät -VAIHTOEHDOT, KYTKEÄ, ja JÄLJITTÄÄ– ovat epämääräisempiä. He käsittelevät metatietoja, verkostoitumista ja vianetsintää. Saatat pitää niitä hyödyllisinä tietyntyyppisissä ohjelmoinneissa, mutta et todennäköisesti käytä niitä joka päivä.

VAIHTOEHDOT

Palvelimen tulee vastata tähän menetelmään kertomalla, mitä HTTP-menetelmiä resurssi todella tukee. Tästä voi olla hyötyä löydön kannalta.

KYTKEÄ

Tietyntyyppiset verkkoohjelmistot voivat käyttää tätä menetelmää tunnelin muodostamiseen kahden tietokoneen välille. Tätä käytetään usein HTTPS-yhteyden käynnistämiseen välityspalvelimen kautta.

JÄLJITTÄÄ

Tämä menetelmä on hyödyllinen vianmäärityksessä. Vastaanotettuaan sen palvelimen tulee lähettää takaisin vastaustekstissä vastaanottamansa pyyntö. Menetelmä tarjoaa mekanismin sen tarkistamiseksi, ovatko välikoneet muuttaneet pyynnön tietoja.

GET ja HEAD ovat ainoat kaksi menetelmää, joita jokainen yleinen verkkopalvelin tukee. Tietty palvelin voi tukea muita menetelmiä tai olla tukematta, joten tarkista ensin.

Milloin voit käyttää näitä menetelmiä?

Suurimman osan ajasta HTTP-menetelmät ovat sinulle läpinäkyviä. Sinun on kuitenkin otettava ne huomioon, jos lisäät lomakkeen verkkosivulle tai käytät sovellusliittymää.

HTTP-menetelmät HTML: ssä

The muodossa elementtiä menetelmä attribuutilla voit määrittää HTTP-menetelmän, jota käytetään lomakkeen lähetyksessä. HTML tukee vain lähettää ja saada arvot tälle attribuutille sekä epäselvä valintaikkuna.

<muodossamenetelmä="lähettää">
...
muodossa>

Voit käyttää ominaisuuksia, kuten Chromen kehittäjätyökalut katsoa Verkko liikenteestä ja vahvista menetelmä, jonka selaimesi lähettää tietylle pyynnölle. Huomaa, että useimmat verkkolomakkeet lähettävät POST-testin, koska ne yleensä päivittävät tietoja palvelimella. Monet hakulomakkeet käyttävät kuitenkin GET: iä, koska ne yksinkertaisesti hakevat tietoja muuttamatta sitä.

Koska POST-tiedot eivät ole osa URL-osoitetta, ne ovat yksityisempiä kuin jos lähetät ne GET: n kautta. Tiedot ovat edelleen pyynnön rungossa, missä teoriassa hyökkääjä voi siepata ne. Tietojen lähettämisen HTTPS: n kautta pitäisi kuitenkin lieventää tätä ongelmaa.

Sinun ei pitäisi koskaan ottaa käyttöön käyttäjän kirjautumista GET-pyyntöjen avulla. Vaikka kirjautuminen saattaa tuntua enemmän lukutoiminnolta kuin luomiselta tai päivitykseltä, sinun on silti käytettävä POST-testiä tietojen suojaamiseen.

Koska HTML-lomakkeet tukevat vain GET- ja POST-toimintoja, et voi luoda suoraan lomaketta, joka esimerkiksi poistaa resurssin palvelimelta. Yleinen kiertotapa, joka kunnioittaa palvelimen REST-periaatteita, on käyttää paikkamerkkimuuttujaa ja teeskennellä, että se oli alkuperäinen HTTP-menetelmä. Esimerkiksi:

<muodossamenetelmä="lähettää">
<syöttötyyppi="piilotettu"nimi="_menetelmä"arvo="POISTAA" />
...
muodossa>

Palvelinpuolen koodisi voi tarkistaa tämän "välityspalvelinmenetelmä"-muuttujan olemassaolon ja käsitellä sitä ikään kuin se olisi todellinen käytetty menetelmä. Esimerkiksi PHP: ssä:

$method = $_SERVER["REQUEST_METHOD"];

jos (array_key_exists("_menetelmä", $_REQUEST)) {
$menetelmä = $_PYYNTÖ["_menetelmä"];
}

HTTP-pyyntöjen lähettäminen ohjelmallisesti

Web Fetch API tarjoaa fetch() JavaScript-toiminnon, jonka avulla voit lähettää HTTP-pyynnön. Se tukee kaikkia menetelmiä, ei vain HTML: n tukemaa GET- ja POST-toimintoa.

Hakutoiminto lähettää oletusarvoisesti GET-pyynnön. Jos haluat käyttää toista menetelmää, määritä sen nimi a: n arvoksi menetelmä -ominaisuus objektissa, jonka lähetät toisena argumenttina.

hae(' https://example.com/', { menetelmä: "PÄÄ" });

Voit myös lähettää HTTP-pyyntöjä monilta palvelinpuolen kieliltä, ​​mukaan lukien PHP. Tällä kielellä curl-kirjasto on yleinen tapa lähettää tällaisia ​​pyyntöjä.

Curl-kirjastossa on CURLOPT_CUSTOMREQUEST-vaihtoehto, jonka voit määrittää menetelmän määrittämiseksi

jos ($ch = curl_init($url)) {
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'LAITTAA');
curl_exec($ch);
// ...
}

Komentorivin kautta

Curl-komentorivityökalu voit siirtää tietoja palvelimelle tai palvelimelta yhden useista protokollista. HTTP (ja HTTPS) ovat kaksi hyvin yleistä käyttötapausta.

Oletuksena curl lähettää GET-pyynnön, kuten voit vahvistaa seuraavalla komennolla:

curl -v -s -o /dev/null esimerkki.com/get-test

Näet pyyntömenetelmän tulosteen viidennellä rivillä:

Voit muuttaa curlin lähettämää pyyntömenetelmää -X-lipulla:

curl -v -s -o /dev/null esimerkki.com/get-test -X POST

Nyt curl lähettää pyynnön POST-menetelmällä:

HTTP: llä on monia käyttötarkoituksia

Suurin osa siitä, mitä teet verkossa, sisältää tavallisia GET-pyyntöjä ja satunnaisia ​​POST-testejä lomakkeiden lähetyksiä varten. Mutta HTTP on paljon ilmeisempi protokolla kuin tämä antaa ymmärtää.

Jotkut yleisimmistä menetelmistä heijastavat CRUD-mallia, mikä tekee HTTP: stä erinomaisen perustan resurssikeskeisen API: n rakentamiselle.