ХТТП је невероватно популаран метод за комуникацију са удаљеним серверима. Користите ову одличну Руст библиотеку да бисте поједноставили процес.

Као и већина програмских језика, Руст можете користити за слање и примање података преко ХТТП-а. Када правите услугу засновану на вебу, често ћете морати да интегришете једну или више услуга. Често ћете то чинити тако што ћете им послати ХТТП захтеве.

Руст има уграђену функционалност за ХТТП операције. Такође постоје многе библиотеке у Руст екосистему које вам помажу у интеракцији са ХТТП-ом и изградњи ХТТП услуга.

Прављење ХТТП захтева са Руст-ом

Неколико Руст библиотека је доступно за прављење ХТТП захтева, укључујући Реквест, Хипер, и Сурф библиотеке. Реквест је најпопуларнији међу Руст програмерима.

Реквест је клијентска библиотека високог нивоа која пружа једноставан и згодан АПИ за прављење ХТТП захтева. Реквест пружа функционалност за слање захтева и руковање одговорима и грешкама. Он апстрахује многе детаље иза прављења ХТТП захтева и подржава напредне функције као што су асинхрони захтеви користећи

токио рунтиме. Такође се бави десеријализацијом ЈСОН-а, ХТТП заглављима, временским ограничењима везе и ССЛ подешавањима.

Библиотека Реквест ће вам бити згодна ако сте нови у Руст-у или немате искуства са ХТТП услугама.

Да бисте почели са Реквест, додајте Реквест и Токио библиотеке према зависностима вашег пројекта. Токио је асинхрона библиотека времена извршавања која ради са Реквест-ом. Можете додати ове зависности у своју Царго.томл датотеку након креирања Руст пројекта.

[зависности]
токио = {верзија = "1.15", карактеристике = ["пун"] }
реквест = {верзија = "0.11", карактеристике = ["јсон"] }

Једном када додате библиотеке Реквест и Токио у зависности вашег пројекта, Царго ће их инсталирати када направите свој програм.

ХТТП ГЕТ захтеви са Реквест-ом

Направићете ГЕТ захтеве за преузимање података са веб сервера. ГЕТ захтеви могу да преузму ХТМЛ странице, ЈСОН податке или бинарне датотеке попут слика или видео записа.

Реквест вам омогућава да одредите крајњу тачку УРЛ-а као стринг заједно са параметрима упита и заглављима за захтев.

Ево како можете да пошаљете ХТТП ГЕТ захтев на УРЛ:

користити реквест:: Грешка;

асинцфнгет_рекуест() -> Резултат {
дозволити одговор = реквест:: гет(" https://www.example.com").чекати?;
принтлн!(„Статус: {}“, респонсе.статус());

дозволити тело = одговор.текст().чекати?;
принтлн!("Тело:\н{}", тело);

Ок(())
}

#[токио:: маин]
асинцфнглавни() -> Резултат {
гет_рекуест().чекати?;
Ок(())
}

Овај код дефинише асинхрону функцију, гет_рекуест, да бисте одштампали детаље одговора из захтева на екампле.цом. То зове реквест модула добити метода и штампа статусни код одговора и тело.

Ево резултата позивања гет_рекуест функција из главни функција:

Руковање ХТТП грешкама помоћу Реквест-а

Мораћете да обрађујете грешке из ХТТП захтева када се појаве. Реквест библиотека пружа Грешка тип који можете користити за обраду грешака. Додатно, ХТТП статусни кодови са веб сервера могу пружити информације о статусу захтева.

Ево како можете да обрађујете ХТТП грешке за своје захтеве помоћу Реквест-а:

користити реквест:: Грешка;

асинцфнхандле_еррор() -> Резултат {
дозволити одговор = реквест:: гет(" https://www.example.com").чекати?;

меч респонсе.статус().ас_у16() {
200..=299 => {
дозволити тело = одговор.текст().чекати?;
принтлн!(„Успех! Тело:\н{}", тело);
}
400..=599 => {
дозволити статус = респонсе.статус();
дозволити еррор_мессаге = респонсе.тект().чекати?;
принтлн!(„Грешка {}: {}“, статус, еррор_мессаге);
}
_ => {
принтлн!(„Неочекивани статусни код: {}“, респонсе.статус());
}
}

Ок(())
}

#[токио:: маин]
асинцфнглавни() -> Резултат {
хандле_еррор().чекати?;
Ок(())
}

Тхе хандле_еррор функција поставља ГЕТ захтев за екампле.цом, а изјава подударања обрађује све грешке на основу кода статуса одговора.

Функција штампа поруку и статусни код у зависности од одговора сервера.

Слање ХТТП ПОСТ захтева са Реквест-ом

Направићете ХТТП ПОСТ захтеве за слање података на сервер. То можете учинити помоћу реквест:: Клијент структуру која креира клијента и користи реквест:: РекуестБуилдер струцт за изградњу захтева.

Ево како можете да пошаљете ПОСТ захтев Крајња тачка ХТТПбин ПОСТ захтева са Реквест-ом:

користити реквест::{Клијент, грешка};

асинцфнокачи то() -> Резултат {
дозволити урл = " https://httpbin.org/post";
дозволити јсон_дата = р#"{"наме": "Јохн Дое", "емаил": "јохн.дое@екампле.цом"}"#;

дозволити цлиент = реквест:: Цлиент:: нев();

дозволити одговор = клијент
.пост (урл)
.хеадер("Тип садржаја", "апплицатион/јсон")
.боди (јсон_дата.то_овнед())
.сенд()
.чекати?;

принтлн!(„Статус: {}“, респонсе.статус());

дозволити одговор_тело = одговор.текст().чекати?;
принтлн!(„Тело одговора:\н{}“, респонсе_боди);

Ок(())
}

#[токио:: маин]
асинцфнглавни() -> Резултат {
окачи то().чекати?;
Ок(())
}

Тхе јсон_дата променљива дефинише ЈСОН податке за захтев, а клијент променљива је а реквест:: Клијент инстанца за ПОСТ захтев.

Тхе одговор променљива је креатор ПОСТ захтева. Тхе пошта метод шаље ПОСТ захтев на УРЛ, а заглавље метод поставља ХТТП заглавље. Тхе тело метода поставља тело захтева, а послати метод шаље захтев.

Тхе окачи то функција штампа код статуса одговора и тело на конзолу користећи принтлн! макро:

Руковање заглављима и параметрима упита вашим ХТТП захтевима

Руковање заглављима и параметрима упита је важан аспект прављења ХТТП захтева. Заглавља садрже додатне информације као што су акредитиви за потврду идентитета или метаподаци о траженом садржају.

Користићете параметре упита да додате додатне информације у УРЛ адресу како би сервер филтрирао или модификовао одговор.

Руковање заглављима и параметрима упита прати сличан процес као и слање захтева за објављивање. Ево како можете да рукујете заглављима и параметрима упита у својим ХТТП захтевима помоћу Реквест-а:

користити стд:: цоллецтионс:: ХасхМап;
користити реквест::{ Грешка, заглавље};

#[токио:: маин]
асинцфнглавни() -> Резултат {
хеадерс_фор_рекуестс().чекати?;
Ок(())
}

асинцфнхеадерс_фор_рекуестс() -> Резултат {
// Подесите УРЛ и заглавља за захтев
дозволити урл = " https://example.com/api";
дозволитимут хеадерс = хеадер:: ХеадерМап:: нев();
хеадерс.инсерт (хеадер:: УСЕР_АГЕНТ, хеадер:: ХеадерВалуе:: фром_статиц("реквест"));
хеадерс.инсерт (хеадер:: ЦОНТЕНТ_ТИПЕ, хеадер:: ХеадерВалуе:: фром_статиц("апплицатион/јсон"));

// Подешавање параметара упита за захтев
дозволитимут парамс = ХасхМап:: нев();
парамс.инсерт("фоо", "бар");
парамс.инсерт("баз", "кук");

// Направи захтев
дозволити одговор = реквест:: Клијент:: нови()
.гет (урл)
.хеадерс (хеадерс)
.куери(&парамс)
.сенд()
.чекати?;

// Руковање одговором
принтлн!("{:#?}", одговор);

Ок(())
}

Направићете хасхмап за параметре упита које затим проследите упит методом. Креирајте инстанцу хеадер:: ХеадерМап откуцајте да бисте додали заглавља.

Тхе хеадерс_фор_рекуестс функција шаље ГЕТ захтев на екампле.цом са више заглавља и параметара упита. Користи се заглавља и упит методе које узимају мапе које садрже заглавља и параметре упита, респективно.

Са ВАСМ-ом можете да направите пуну веб апликацију у Русту

Прављење ХТТП захтева је вештина која је згодна за прављење софистицираних апликација које интегришу функционалност других апликација.

Можете да направите комплетне веб апликације у Русту са библиотекама као што су Перци, Иев и Сицаморе које апстрактне сложености за одлично искуство у развоју.