HTTP yra neįtikėtinai populiarus būdas bendrauti su nuotoliniais serveriais. Norėdami supaprastinti procesą, naudokite šią puikią Rust biblioteką.

Kaip ir daugumą programavimo kalbų, Rust galite naudoti norėdami siųsti ir gauti duomenis per HTTP. Kai kuriate žiniatinklio paslaugą, dažnai turėsite integruoti vieną ar daugiau paslaugų. Dažnai tai darysite siųsdami jiems HTTP užklausas.

Rust turi įmontuotą HTTP operacijų funkciją. Rust ekosistemoje taip pat yra daug bibliotekų, kurios padeda sąveikauti su HTTP ir kurti HTTP paslaugas.

HTTP užklausų teikimas naudojant rūdis

Yra keletas Rust bibliotekų, skirtų HTTP užklausoms teikti, įskaitant Reqwest, Hiper, ir Surf bibliotekos. Reqwest yra populiariausias tarp Rust kūrėjų.

„Reqwest“ yra aukšto lygio klientų biblioteka, teikianti paprastą ir patogią API HTTP užklausoms teikti. „Reqwest“ suteikia užklausų siuntimo ir atsakymų bei klaidų tvarkymo funkciją. Jis abstrahuoja daug informacijos, susijusios su HTTP užklausos pateikimu, ir palaiko išplėstines funkcijas, pvz., asinchronines užklausas naudojant

instagram viewer
tokio vykdymo laikas. Jis taip pat tvarko JSON deserializavimą, HTTP antraštes, ryšio skirtąjį laiką ir SSL nustatymus.

„Reqwest“ biblioteka bus naudinga, jei dar nesate „Rust“ arba neturite patirties naudojant HTTP paslaugas.

Norėdami pradėti nuo Reqwest, pridėkite Reqwest ir Tokio bibliotekas prie jūsų projekto priklausomybių. Tokio yra asinchroninė vykdymo biblioteka, kuri sąveikauja su Reqwest. Šias priklausomybes galite pridėti prie savo Krovinys.toml failą sukūrę Rust projektą.

[priklausomybės]
tokio = { versija = "1.15", funkcijos = ["pilna"] }
reqwest = { versija = "0.11", funkcijos = ["json"] }

Kai pridėsite Reqwest ir Tokio bibliotekas prie savo projekto priklausomybių, Cargo jas įdiegs, kai sukursite programą.

HTTP GET užklausos naudojant „Reqwest“.

Pateiksite GET užklausas, kad gautumėte duomenis iš žiniatinklio serverio. GET užklausos gali gauti HTML puslapius, JSON duomenis arba dvejetainius failus, pvz., vaizdus ar vaizdo įrašus.

„Reqwest“ leidžia nurodyti URL galinį tašką kaip eilutę kartu su užklausos parametrais ir užklausos antraštėmis.

Štai kaip galite nusiųsti HTTP GET užklausą į URL:

naudoti reqwest:: Klaida;

asyncfngauti_užklausą() -> Rezultatas {
leisti atsakymas = reqwest:: get(" https://www.example.com").laukti?;
println!("Būsena: {}", atsakymas.statusas());

leisti body = atsakas.tekstas().laukti?;
println!("Turinys:\n{}", kūnas);

Gerai(())
}

#[tokio:: pagrindinis]
asyncfnpagrindinis() -> Rezultatas {
get_request().laukti?;
Gerai(())
}

Šis kodas apibrėžia asinchroninę funkciją, gauti_užklausą, norėdami atspausdinti išsamią atsakymo informaciją iš užklausos example.com. Tai vadina reqwest modulius gauti metodą ir išspausdina atsakymo būsenos kodas ir kūnas.

Štai skambinimo rezultatas gauti_užklausą funkcija iš pagrindinis funkcija:

HTTP klaidų tvarkymas naudojant „Reqwest“.

Turėsite tvarkyti HTTP užklausų klaidas, kai jos atsiras. „Reqwest“ biblioteka suteikia galimybę Klaida tipas, kurį galite naudoti klaidoms tvarkyti. Be to, HTTP būsenos kodai iš žiniatinklio serverio gali suteikti informacijos apie užklausos būseną.

Štai kaip galite tvarkyti HTTP klaidas savo užklausoms naudodami Reqwest:

naudoti reqwest:: Klaida;

asyncfnhand_error() -> Rezultatas {
leisti atsakymas = reqwest:: get(" https://www.example.com").laukti?;

rungtynės atsakymas.statusas().as_u16() {
200..=299 => {
leisti body = atsakas.tekstas().laukti?;
println!("Sėkmė! Turinys:\n{}", kūnas);
}
400..=599 => {
leisti status = atsakymas.statusas();
leisti error_message = atsakymas.tekstas().laukti?;
println!("Klaida {}: {}", status, error_message);
}
_ => {
println!("Netikėtas būsenos kodas: {}", atsakymas.statusas());
}
}

Gerai(())
}

#[tokio:: pagrindinis]
asyncfnpagrindinis() -> Rezultatas {
hand_error().laukti?;
Gerai(())
}

The hand_error funkcija pateikia GET užklausą example.com, o atitikties sakinys apdoroja visas klaidas pagal atsakymo būsenos kodą.

Funkcija spausdina pranešimą ir būsenos kodą, priklausomai nuo atsakymo į serverį.

HTTP POST užklausų siuntimas naudojant „Reqwest“.

Pateiksite HTTP POST užklausas, kad pateiktumėte duomenis į serverį. Tai galite padaryti naudodami reqwest:: Klientas struktūra, kuri sukuria klientą ir naudoja reqwest:: RequestBuilder struktūra sukurti užklausą.

Štai kaip galite pateikti POST užklausą HTTPbin POST užklausos galutinis taškas su užklausa:

naudoti reqwest::{Klientas, klaida};

asyncfnPaskelbk tai() -> Rezultatas {
leisti url = " https://httpbin.org/post";
leisti json_data = r#"{"vardas": "Jonas Dojus", "el. paštas": "[email protected]"}"#;

leisti klientas = reqwest:: Klientas:: naujas();

leisti atsakymas = klientas
.post (url)
.header("Turinio tipas", "application/json")
.body (json_data.to_owned())
.send()
.laukti?;

println!("Būsena: {}", atsakymas.statusas());

leisti atsako_kūnas = atsakymas.tekstas().laukti?;
println!("Atsakymo tekstas:\n{}", atsakymo_kūnas);

Gerai(())
}

#[tokio:: pagrindinis]
asyncfnpagrindinis() -> Rezultatas {
Paskelbk tai().laukti?;
Gerai(())
}

The json_data kintamasis apibrėžia užklausos JSON duomenis ir klientas kintamasis yra a reqwest:: Klientas POST užklausos pavyzdys.

The atsakymą kintamasis yra POST užklausų kūrimo priemonė. The paštu metodas siunčia POST užklausą į URL ir antraštę metodas nustato HTTP antraštę. The kūnas metodas nustato užklausos kūną ir siųsti metodas siunčia užklausą.

The Paskelbk tai funkcija išspausdina atsakymo būsenos kodą ir turinį konsolėje, naudodama println! makrokomandas:

HTTP užklausų antraščių ir užklausos parametrų tvarkymas

Antraščių ir užklausos parametrų tvarkymas yra svarbus HTTP užklausų teikimo aspektas. Antraštėse yra papildomos informacijos, pvz., autentifikavimo kredencialai arba metaduomenys apie prašomą turinį.

Naudosite užklausos parametrus, kad pridėtumėte papildomos informacijos prie URL, kad serveris galėtų filtruoti arba modifikuoti atsakymą.

Antraštės ir užklausos parametrai apdorojami taip pat, kaip ir siuntimo užklausos. Štai kaip galite tvarkyti HTTP užklausų antraštes ir užklausos parametrus naudodami Reqwest:

naudoti std:: kolekcijos:: HashMap;
naudoti reqwest::{ Klaida, antraštė};

#[tokio:: pagrindinis]
asyncfnpagrindinis() -> Rezultatas {
headers_for_requests().laukti?;
Gerai(())
}

asyncfnantraštės_užklausoms() -> Rezultatas {
// Nustatykite užklausos URL ir antraštes
leisti url = " https://example.com/api";
leistimut headers = header:: HeaderMap:: new();
headers.insert (antraštė:: USER_AGENT, antraštė:: HeaderValue:: from_static("užklausa"));
headers.insert (antraštė:: CONTENT_TYPE, antraštė:: HeaderValue:: from_static("application/json"));

// Nustatykite užklausos parametrus
leistimut params = HashMap:: new();
params.insert("foo", "baras");
params.insert("baz", "qux");

// Pateikite prašymą
leisti atsakymas = reqwest:: Klientas:: naujas()
.get (url)
.headers (antraštės)
.query(&params)
.send()
.laukti?;

// Tvarkykite atsakymą
println!("{:#?}", atsakymas);

Gerai(())
}

Sukursite užklausos parametrų maišos diagramą, kurią perduosite į užklausą metodas. Sukurkite egzempliorių antraštė:: HeaderMap įveskite antraštes.

The antraštės_užklausoms funkcija siunčia GET užklausą example.com su keliomis antraštėmis ir užklausos parametrais. Jis naudoja antraštes ir užklausą metodai, kurie paima žemėlapius, kuriuose yra atitinkamai antraštės ir užklausos parametrai.

Galite sukurti pilną „WebApp“ programą „Rust“ naudodami WASM

HTTP užklausų teikimas yra įgūdis, kuris yra patogus kuriant sudėtingas programas, kurios integruoja kitų programų funkcijas.

Galite kurti visas žiniatinklio programas „Rust“ naudodami tokias bibliotekas kaip „Percy“, „Yew“ ir „Sycamore“, kurios abstrakčiai išskiria sudėtingumą ir užtikrina puikią kūrimo patirtį.