Du har måske hørt om GET- og POST-anmodninger, men de er kun begyndelsen.

Hver HTTP-anmodning bruger en metode til at beskrive dens væsentlige formål. Hver metode har specifikke anvendelser til opgaver lige fra at hente en webside til at slette en ressource. GET og POST er de to mest kendte, men der er syv andre.

Lær om dette koncept og hvad hver af de ni mulige HTTP-metoder er til.

Hvad er en HTTP-metode?

Hver HTTP-anmodning, du laver, inkluderer en handling og et mål for den handling, ligesom et verbum og et substantiv, der fungerer som et objekt.

URL'en identificerer en unik ressource, der fungerer som målet for anmodningen. I mellemtiden er verbet - hvilken handling der skal udføres på den URL - repræsenteret af en metode.

Den første linje i en HTTP-anmodning giver de vigtigste oplysninger, herunder HTTP-versionen, ressource-URL'en og anmodningsmetoden:

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

Hvad er de 9 HTTP-metoder?

De første fire metoder svarer til de fire handlinger fra CRUD-modellen: Opret, Læs, Opdater og Slet. De respektive HTTP-metoder er STOLPE, , SÆTTE, og SLET.

instagram viewer

Den mest almindelige standardanmodning, du sender, når du surfer på nettet og klikker på links eller anmoder om data via en API. Serveren skal returnere ressourcen i sin svartekst.

STOLPE

Brug POST til at oprette nye ressourcer, især når disse ressourcer har en identificerbar overordnet ressource. For eksempel, hvis du har en /clients-ressource, bør du oprette en ny klient ved at POSTE nødvendige data til /clients.

SÆTTE

Opdater eller erstat en eksisterende ressource. Dette svarer til POST, men klienten er ansvarlig for at vælge en unik identifikator for ressourcen. For at oprette en ressource ved hjælp af PUT, skal ressource-URL'en indeholde en identifikator, f.eks. /clients/007.

SLET

Brug denne metode til at slette den ressource, du angiver i URL'en. Som alle HTTP-metoder er support ned til serveren. Det kan lade enhver slette en ressource, selvom det klart ville være risikabelt. En server, der understøtter DELETE, vil normalt kræve autentificering og autorisation.

To andre metoder giver små variationer i forhold til ovenstående: LAPPE og HOVED. Du kan finde dem nyttige, når du bruger visse API'er, eller hvis du bygger dine egne.

LAPPE

PATCH-metoden opdaterer en eksisterende ressource med kun delvise data. Du behøver med andre ord ikke at levere den fulde repræsentation af den nye ressource, kun de felter, du skal opdatere.

HOVED

En HEAD-anmodning er til, når du ønsker information om en ressource, men ikke selve ressourcen. Svaret vil ikke indeholde en brødtekst, men det vil indeholde et sæt nyttige HTTP-headere. Du kan finde ud af den samlede størrelse af en fil, før du downloader den, via Content-Length-svarheaderen.

De resterende metoder -MULIGHEDER, FORBINDE, og SPOR- er mere uklare. De beskæftiger sig med metadata, netværk og fejlfinding. Du kan finde dem nyttige i visse typer programmering, men du vil sandsynligvis ikke bruge dem hver dag.

MULIGHEDER

En server bør reagere på denne metode ved at fortælle dig, hvilke HTTP-metoder ressourcen faktisk understøtter. Dette kan være nyttigt til opdagelse.

FORBINDE

Visse typer netværkssoftware kan bruge denne metode til at etablere en tunnel mellem to computere. Dette bruges ofte til at starte en HTTPS-forbindelse via en proxy.

SPOR

Denne metode er nyttig til fejlfinding. Efter at have modtaget det, skal serveren sende den anmodning tilbage, den modtog i svarteksten. Metoden giver en mekanisme til at kontrollere, om mellemliggende maskiner har ændret nogen detaljer i anmodningen.

GET og HEAD er de eneste to metoder, som enhver generel webserver understøtter. En bestemt server understøtter muligvis ikke andre metoder, så du bør tjekke først.

Hvornår kan du bruge disse metoder?

Meget af tiden vil HTTP-metoder være gennemsigtige for dig. Du skal dog overveje dem, hvis du tilføjer en formular til en webside eller bruger en API.

HTTP-metoder i HTML

Det form elements metode attribut lader dig indstille HTTP-metoden, der skal bruges, når formularen indsendes. HTML understøtter kun stolpe og værdier for denne attribut – plus et obskur dialogalternativ.

<formmetode="stolpe">
...
form>

Du kan bruge funktioner som f.eks Chromes udviklerværktøjer at se Netværk trafik og bekræft den metode, din browser sender til en bestemt anmodning. Bemærk, at de fleste webformularer sender en POST, da de typisk opdaterer data på serveren. Mange søgeformularer bruger dog GET, da de blot henter data uden at ændre dem.

Fordi POST-data ikke er en del af URL'en, er det mere privat, end hvis du sender det via en GET. Dataene findes stadig i selve anmodningen, hvor en angriber i teorien kan opsnappe dem. Men at sende data via HTTPS bør afhjælpe dette problem.

Du bør aldrig implementere et brugerlogin med GET-anmodninger. Selvom login kan virke mere som en læsehandling end en oprettelse eller opdatering, skal du stadig bruge POST for at sikre dataene.

Da HTML-formularer kun understøtter GET og POST, kan du ikke direkte oprette en formular, der for eksempel sletter en ressource på serveren. En almindelig løsning, som respekterer REST-principperne på serveren, er at bruge en pladsholdervariabel og lade som om, det var den oprindelige HTTP-metode. For eksempel:

<formmetode="stolpe">
<inputtype="skjult"navn="_metode"værdi="SLET" />
...
form>

Din server-side-kode kan kontrollere tilstedeværelsen af ​​denne 'proxy-metode'-variabel og behandle den, som om det var den rigtige metode, der blev brugt. For eksempel i PHP:

$metode = $_SERVER["REQUEST_METHOD"];

hvis (array_key_exists("_metode", $_REQUEST)) {
$metode = $_REQUEST["_metode"];
}

Afsendelse af HTTP-anmodninger programmatisk

Web Fetch API'en giver en fetch() JavaScript-funktion, som du kan bruge til at sende en HTTP-anmodning. Det understøtter hele rækken af ​​metoder, ikke kun GET og POST, som HTML understøtter.

Hent-funktionen sender som standard en GET-anmodning. For at bruge en anden metode skal du angive dens navn som værdien for a metode egenskab i et objekt, som du sender som det andet argument.

hente(' https://example.com/', { metode: "HOVED" });

Du kan også sende HTTP-anmodninger fra mange server-side sprog, herunder PHP. På det sprog er curl-biblioteket en almindelig måde at sende sådanne anmodninger på.

Curl-biblioteket har en CURLOPT_CUSTOMREQUEST-indstilling, du kan indstille til at angive en metode

hvis ($ch = curl_init($url)) {
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'SÆTTE');
curl_exec($ch);
// ...
}

Via kommandolinjen

Curl kommandolinjeværktøjet lader dig overføre data til eller fra en server via en af ​​flere protokoller. HTTP (og HTTPS) er to meget almindelige tilfælde.

Som standard sender curl en GET-anmodning, som du kan bekræfte med følgende kommando:

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

Du kan se anmodningsmetoden på den femte linje i outputtet:

Du kan ændre anmodningsmetoden, som curl sender ved hjælp af -X-flaget:

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

Curl sender nu en anmodning ved hjælp af POST-metoden:

HTTP har mange anvendelsesmuligheder

Det meste af det, du laver på nettet, vil involvere standard GET-anmodninger, med lejlighedsvis POST til formularindsendelser. Men HTTP er en meget mere udtryksfuld protokol, end dette antyder.

Nogle af de mest almindelige metoder afspejler CRUD-modellen, som gør HTTP til et fremragende grundlag at bygge en ressourcefokuseret API på.