HTTP je neuveriteľne populárna metóda na komunikáciu so vzdialenými servermi. Použite túto vynikajúcu knižnicu Rust na zjednodušenie procesu.

Ako väčšina programovacích jazykov, aj Rust môžete použiť na odosielanie a prijímanie dát cez HTTP. Keď vytvárate webovú službu, často budete musieť integrovať jednu alebo viac služieb. Často to urobíte odoslaním požiadaviek HTTP.

Rust má zabudovanú funkčnosť pre HTTP operácie. V ekosystéme Rust je tiež veľa knižníc, ktoré vám pomáhajú interagovať s HTTP a vytvárať služby HTTP.

Vytváranie požiadaviek HTTP s hrdzou

Na vytváranie požiadaviek HTTP je dostupných niekoľko knižníc Rust, vrátane Reqwest, Hyper, a Surfujte knižnice. Reqwest je medzi vývojármi Rust najobľúbenejší.

Reqwest je klientska knižnica na vysokej úrovni, ktorá poskytuje jednoduché a pohodlné rozhranie API na vytváranie požiadaviek HTTP. Reqwest poskytuje funkcie na odosielanie požiadaviek a spracovanie odpovedí a chýb. Abstrahuje mnoho podrobností za vytvorením požiadavky HTTP a podporuje pokročilé funkcie, ako sú asynchrónne požiadavky pomocou

instagram viewer
tokio beh programu. Spracováva aj deserializáciu JSON, hlavičky HTTP, časové limity pripojenia a nastavenia SSL.

Knižnica Reqwest sa vám bude hodiť, ak ste novým používateľom Rust alebo nemáte skúsenosti so službami HTTP.

Ak chcete začať s Reqwest, pridajte Reqwest a Tokio knižnice na závislosti vášho projektu. Tokio je asynchrónna runtime knižnica, ktorá spolupracuje s Reqwest. Tieto závislosti môžete pridať do svojho Cargo.toml súbor po vytvorení projektu Rust.

[závislosti]
tokio = { verzia = "1.15", funkcie = ["plné"] }
reqwest = { verzia = "0.11", funkcie = ["json"] }

Keď do závislostí vášho projektu pridáte knižnice Reqwest a Tokio, Cargo ich nainštaluje pri zostavovaní vášho programu.

HTTP GET požiadavky s Reqwest

Budete odosielať požiadavky GET na načítanie údajov z webového servera. Žiadosti GET môžu načítať stránky HTML, údaje JSON, príp binárne súbory, ako sú obrázky alebo videá.

Reqwest vám umožňuje zadať koncový bod adresy URL ako reťazec spolu s parametrami dotazu a hlavičkami pre požiadavku.

Tu je postup, ako môžete odoslať požiadavku HTTP GET na adresu URL:

použitie reqwest:: Chyba;

asyncfnget_request() -> Výsledok {
nech odpoveď = reqwest:: get(" https://www.example.com").čakať?;
println!("Postavenie: {}", odozva.stav());

nech telo = odozva.text().čakať?;
println!("Telo:\n{}", telo);

Dobre(())
}

#[tokio:: main]
asyncfnHlavná() -> Výsledok {
get_request().čakať?;
Dobre(())
}

Tento kód definuje asynchrónnu funkciu, get_request, ak chcete vytlačiť podrobnosti odpovede zo požiadavky na example.com. Volá to reqwest modulov dostať metódu a vytlačí stavový kód odpovede a telo.

Tu je výsledok volania na get_request funkcia z Hlavná funkcia:

Spracovanie chýb HTTP pomocou Reqwest

Budete musieť spracovať chyby z požiadaviek HTTP, keď sa vyskytnú. Knižnica Reqwest poskytuje Chyba typ, ktorý môžete použiť na spracovanie chýb. Okrem toho môžu stavové kódy HTTP z webového servera poskytnúť informácie o stave požiadavky.

Tu je návod, ako môžete spracovať chyby HTTP pre vaše požiadavky pomocou Reqwest:

použitie reqwest:: Chyba;

asyncfnhandle_error() -> Výsledok {
nech odpoveď = reqwest:: get(" https://www.example.com").čakať?;

zápas response.status().as_u16() {
200..=299 => {
nech telo = odozva.text().čakať?;
println!("Úspech! Telo:\n{}", telo);
}
400..=599 => {
nech stav = odozva.stav();
nech error_message = odpoveď.text().čakať?;
println!("Chyba {}: {}", stav, chybová_správa);
}
_ => {
println!("Neočakávaný stavový kód: {}", odozva.stav());
}
}

Dobre(())
}

#[tokio:: main]
asyncfnHlavná() -> Výsledok {
handle_error().čakať?;
Dobre(())
}

The handle_error funkcia odošle požiadavku GET example.coma príkaz zhody spracováva všetky chyby na základe kódu stavu odpovede.

Funkcia vytlačí správu a stavový kód v závislosti od odpovede na server.

Odosielanie HTTP POST požiadaviek s Reqwest

Budete odosielať požiadavky HTTP POST na odoslanie údajov na server. Môžete tak urobiť pomocou reqwest:: Klient štruktúra, ktorá vytvára klienta a používa reqwest:: RequestBuilder struct na zostavenie požiadavky.

Tu je návod, ako môžete požiadať o POST Koncový bod požiadavky POST HTTPbin s Reqwest:

použitie reqwest::{Client, Error};

asyncfnuverejniť to() -> Výsledok {
nech url = " https://httpbin.org/post";
nech json_data = r#"{"meno": "John Doe", "e-mail": "[email protected]"}"#;

nech client = reqwest:: Client:: new();

nech odpoveď = klient
.post (url)
.header("Druh obsahu", "application/json")
.body (json_data.to_owned())
.odoslať()
.čakať?;

println!("Postavenie: {}", odozva.stav());

nech response_body = response.text().čakať?;
println!("Telo odpovede:\n{}", telo_odpovede);

Dobre(())
}

#[tokio:: main]
asyncfnHlavná() -> Výsledok {
uverejniť to().čakať?;
Dobre(())
}

The json_data premenná definuje údaje JSON pre požiadavku a zákazník premenná je a reqwest:: Klient napríklad pre požiadavku POST.

The odpoveď premenná je tvorca požiadavky POST. The príspevok metóda odošle požiadavku POST na adresu URL a hlavička metóda nastavuje hlavičku HTTP. The telo metóda nastavuje telo požiadavky a poslať metóda odošle požiadavku.

The uverejniť to funkcia vytlačí stavový kód odpovede a telo do konzoly pomocou println! makro:

Spracovanie hlavičiek a parametrov dopytov vašich požiadaviek HTTP

Spracovanie hlavičiek a parametrov dotazu je dôležitým aspektom vytvárania požiadaviek HTTP. Hlavičky obsahujú ďalšie informácie, ako sú overovacie poverenia alebo metadáta o požadovanom obsahu.

Parametre dopytu použijete na pridanie ďalších informácií do adresy URL, aby server mohol filtrovať alebo upravovať odpoveď.

Spracovanie hlavičiek a parametrov dotazu prebieha podobne ako pri odosielaní žiadostí o príspevok. Tu je návod, ako môžete spracovať hlavičky a parametre dopytu vo svojich požiadavkách HTTP pomocou Reqwest:

použitie std:: kolekcie:: HashMap;
použitie reqwest::{ Chyba, hlavička};

#[tokio:: main]
asyncfnHlavná() -> Výsledok {
headers_for_requests().čakať?;
Dobre(())
}

asyncfnheaders_for_requests() -> Výsledok {
// Nastavte adresu URL a hlavičky pre požiadavku
nech url = " https://example.com/api";
nechmut hlavičky = hlavička:: Mapa hlavičky:: new();
headers.insert (header:: USER_AGENT, header:: HeaderValue:: from_static("reqwest"));
headers.insert (header:: CONTENT_TYPE, header:: HeaderValue:: from_static("application/json"));

// Nastavte parametre dotazu pre požiadavku
nechmut params = HashMap:: new();
params.insert("foo", "bar");
params.insert("baz", "qux");

// Zadajte požiadavku
nech odpoveď = reqwest:: Klient:: new()
.get (url)
.headers (headers)
.query(&params)
.odoslať()
.čakať?;

// Spracovať odpoveď
println!("{:#?}", odpoveď);

Dobre(())
}

Vytvoríte hashmap pre parametre dopytu, ktoré potom odošlete do dopyt metóda. Vytvorte inštanciu súboru header:: HeaderMap zadajte a pridajte hlavičky.

The headers_for_requests funkcia odošle požiadavku GET na example.com s viacerými hlavičkami a parametrami dotazu. Používa sa hlavičky a dopyt metódy, ktoré preberajú mapy obsahujúce hlavičky a parametre dotazu.

Pomocou WASM môžete vytvoriť webovú aplikáciu Full Stack v hrdze

Vytváranie požiadaviek HTTP je zručnosť, ktorá je užitočná pri vytváraní sofistikovaných aplikácií, ktoré integrujú funkcie z iných aplikácií.

V Ruste môžete vytvárať kompletné webové aplikácie s knižnicami ako Percy, Yew a Sycamore, ktoré abstraktné zložitosti poskytujú vynikajúce skúsenosti s vývojom.