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
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(¶ms)
.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.