Читаоци попут вас помажу у подршци МУО. Када обавите куповину користећи везе на нашем сајту, можда ћемо зарадити провизију за партнере. Опширније.

Го је моћан и флексибилан језик за прављење веб апликација. Тхе нет пакет игра суштинску улогу у Го-овом екосистему.

Као и већина програмских језика на страни сервера, Го се испоручује са ХТТП пакетом за интеракцију са ХТТП протоколом. Релевантни Го пакет је хттп пакет, подпакет нет пакет.

Шта је нет/хттп пакет?

Тхе нет/хттп пакет је једна од стандардних библиотека у Го. Пружа пун скуп функција и типова за прављење ХТТП клијената, сервера и других операција заснованих на ХТТП-у. Ови укључују:

  • Функције за прављење ХТТП захтева.
  • Обрада захтева и одговора.
  • Послуживање ХТТП захтева.
  • Повезани објекти као што су заглавља и колачићи.

Тхе нет/хттп пакет такође подржава ТЛС/ССЛ енкрипцију, ХТТП/2 и друге напредне функције што пакет чини основним алатом за Го програмере.

Многе популарне Го библиотеке и оквири, од Горилла веб алата до Ецхо веб оквира, граде се на врху нет/хттп пакет.

instagram viewer

Покретање једноставног ХТТП сервера

Покретање сервера је једна од основних операција које морате да разумете да бисте радили са ХТТП протоколом.

Ево програма за покрените једноставан сервер у Го:

пакет главни

увоз (
"фмт"
"нет/хттп"
)

// руковалац је типичан ХТТП руковалац захтев-одговор у Го; детаљи касније
фунцруковалац(в хттп. РеспонсеВритер, р *хттп. Захтев) {
// Фпринтф форматира стринг у писац
фмт. Фпринтф (в, "Здраво Свете!")
}

фунцглавни() {
хттп. ХандлеФунц("/", руковалац)
хттп. Слушај и служи (":8080", нула)
}

Тхе руковалац функција је типичан руковалац захтев-одговор за хттп пакет. Ова функција записује стринг "Здраво, свет!" писцу ХТТП одговора.

О покретању кода и посети http://localhost: 8080/ у веб прегледачу, требало би да видите „Здраво, свет!“ стринг приказан у вашем претраживачу.

Обрада захтева и одговора

Можете да обрађујете долазне захтеве помоћу ХандлеФунц методом хттп пакет. Тхе ХандлеФунц метода узима низ руте и функцију руковаоца.

Тхе хттп. Захтев метода је инстанца долазног захтева и можете користити бројне методе ваше инстанце за интеракцију са захтевима ка рути.

хттп. ХандлеФунц("/корисници", фунц(в хттп. РеспонсеВритер, р *хттп. Захтев) {
прекидач р. Метод {
случај"ДОБИТИ":
// обрађује ГЕТ захтев
случај"ПОШТА":
// обрађује ПОСТ захтев
Уобичајено:
хттп. Грешка (в, „Неважећи метод захтева“, хттп. СтатусМетходНотАлловед)
}
})

Код изнад користи хттп пакет за дефинисање функције ХТТП руковања за /users рута. Функција руковаоца слуша долазне ХТТП захтеве на рути и обрађује их на основу методе захтева (нпр. ДОБИТИ, ПОШТА, итд.)

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

Функција руковаоца изнад користи а прекидач изјаву за одређивање методе захтева и покретање различитих блокова кода на основу методе. Ако је метода ДОБИТИ, руковалац ће руковати ДОБИТИ захтев. Иначе, метод је ПОШТА; то ће се носити са ПОШТА захтев.

Ако је метод нешто друго, он ће послати хттп. Грешка са поруком „Неважећи метод захтева“ и а СтатусМетходНотАлловедХТТП статусни код клијенту.

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

в. напиши([]бајт("Здраво Свете!"))

Можете користити ВритеХеадер метода вашег РеспонсеВритер инстанце за писање заглавља клијенту.

в. ВритеХеадер (хттп. Статус ОК)

Рад са ХТТП средњим софтвером

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

Ево примера евидентирања функције руковања средњим софтвером у Го:

фунцлоггингМиддлеваре(следећи хттп. руковалац)хттп.Хандлер {
повратак хттп. ХандлерФунц(фунц(в хттп. РеспонсеВритер, р *хттп. Захтев) {
// пријави захтев
следећи. СервеХТТП(в, р)
// евидентирање одговора
})
}

Тхе логгингМиддлеваре функција преузима ХТТП руковалац и враћа нови ХТТП руковалац. Враћени ХТТП руковалац је анонимна функција која преузима ХТТП записивач одговора и ХТТП захтев. Функција евидентира захтев и позива СервеХТТП метода на следећи ХТТП руковалац, прослеђујући писац одговора и захтев као аргументе.

Можете руковати функцијама средњег софтвера помоћу Дршка методом хттп пакет. Тхе Дршка метода преузима руту и ​​функцију међувера.

хттп. ручка ("/", логгингМиддлеваре (хттп. ХандлерФунц (хандлер)))

Преусмеравања са ХТТП пакетом

Преусмеравање је популарна операција за веб апликације које упућују кориснике на друге ресурсе или веб странице.

Можете да преусмерите на другу веб страницу користећи Преусмери методом хттп пакет.

хттп. Преусмеравање (в, р, " http://example.com", хттп. СтатусМоведПерманентли)

Тхе Преусмери метода узима у РеспонсеВритер и Захтев инстанце, УРЛ нове странице и статусни код за преусмеравање.

Можете да направите сложене АПИ-је у Го

Тхе хттп пакет је моћан и флексибилан алат за изградњу сложених АПИ-ја. Можете користити Го-ову богату стандардну библиотеку и друге моћне пакети трећих страна за додавање функционалности вашим АПИ-јима, као што су повезивање базе података и подршка за различите веб-странице оквири.

Уз Го, можете да направите скалабилне АПИ-је високих перформанси који са лакоћом обрађују значајан саобраћај захтева и сложене задатке обраде података.