УРЛ-ови (Униформ Ресоурце Лоцаторс) су један од најкритичнијих делова интернетске инфраструктуре. Док правите веб апликације, мораћете да манипулишете УРЛ адресама да бисте лоцирали и преузели ресурсе.
Када правите софистицираније веб апликације, мораћете да радите са УРЛ адресама на финијем нивоу. Можда ћете морати да идентификујете шему, име хоста, путању и параметре упита. Такође ћете морати да знате како да кодирате и декодирате УРЛ адресе да бисте могли да рукујете посебним знаковима и да своју веб апликацију чувате безбедном.
Го-ова стандардна библиотека обезбеђује нет/урл пакет за руковање УРЛ-овима и УРЛ компонентама.
УРЛ пакет
Тхе урл пакет пружа свеобухватне функције и карактеристике за рад са УРЛ адресе и њихови засебни делови. Пружа функције за рашчлањивање, конструисање, кодирање и декодирање УРЛ-ова, чинећи пакет корисним за веб развој.
Неке од кључних карактеристика урл пакет су могућност рашчлањивања УРЛ-ова у појединачне компоненте за манипулацију и конструкцију УРЛ-а за ХТТП захтеве. Тхе урл пакет такође пружа а УРЛ структурирати са а Парсе метод за рашчлањивање стрингова у УРЛ адресе.
Ево урл. УРЛ струцт модел:
пакет главни
тип УРЛ струцт {
// Шема је шема протокола УРЛ адресе,
// као што је "хттп" или "хттпс"
Шема низ// Опакуе се користи за чување свих непрозирних података
// који треба да буде кодиран у УРЛ-у
Опакуе низ// Корисник поседује информације о кориснику који је поднео захтев,
// као што су корисничко име и лозинка
Корисник *Корисничке информације// Хост је име хоста или ИП адреса
// сервера који хостује УРЛ
Домаћин низ// Путања је путања УРЛ адресе на серверу
Пут низ// РавПатх је оригинал,
// кодирана путања УРЛ адресе
РавПатх низ// ФорцеКуери указује да ли УРЛ треба да садржи стринг упита
// чак и ако је празан
ФорцеКуери боол// РавКуери је оригинал,
//кодирани стринг упита УРЛ-а
РавКуери низ// Фрагмент је идентификатор фрагмента УРЛ адресе,
// користи се за повезивање са одређеним елементом на страници
Фрагмент низ
// РавФрагмент је оригинал,
// кодирани идентификатор фрагмента УРЛ адресе
РавФрагмент низ
}
Знајући како приступити различитим деловима УРЛ струцт може бити корисна за задатке као што је валидација.
Парсирање УРЛ-ова помоћу функције Парсе
Тхе Парсе функција на урл пакет пружа функционалност за рашчлањивање УРЛ стрингова у појединачне компоненте. Тхе Парсе функција узима један УРЛ као аргумент и враћа показивач на урл. УРЛ структура која садржи рашчлањене податке УРЛ-а и тип грешке.
Ево како можете да користите Парсе функција за преузимање елемената УРЛ-а.
увоз (
"фмт"
"нет/урл"
)фунцглавни() {
// УРЛ који желите да рашчланите
екамплеУРЛ := " https://www.example.com/path? парам1=вредност1&парам2=вредност2"// Парсирај УРЛ
парседУРЛ, ерр := урл. Парсе (екамплеУРЛ)ако ерр != нула {
фмт. Принтлн (грешка)
повратак
}
// Штампа сва поља УРЛ адресе
фмт. Принтлн("Шема:", парседУРЛ.Сцхеме)
фмт. Принтлн(„Непрозирно:“, парседУРЛ.Опакуе)
фмт. Принтлн("Корисник:", парседУРЛ.Усер)
фмт. Принтлн("Домаћин:", парседУРЛ.Хост)
фмт. Принтлн(„Пут:“, парседУРЛ.Патх)
фмт. Принтлн("РавПатх:", парседУРЛ.РавПатх)
фмт. Принтлн(„ФорцеКуери:“, парседУРЛ.ФорцеКуери)
фмт. Принтлн(„РавКуери:“, парседУРЛ.РавКуери)
фмт. Принтлн("Фрагмент:", парседУРЛ.Фрагмент)
фмт. Принтлн(„РавФрагмент:“, парседУРЛ.РавФрагмент)
}
Тхе екамплеУРЛ променљива садржи пуну, нерашчлањену УРЛ адресу и Парсе функција анализира садржај екамплеУРЛ променљиву и враћа рашчлањени УРЛ. Програм се завршава низом позива на Принтлн да демонстрира појединачна поља УРЛ струцт.
Функција рашчлањивања не проверава да ли је УРЛ прави који заиста постоји, само синтактички анализира УРЛ. Можете користити хттп пакет да направите ГЕТ захтев за УРЛ и проверите одговор:
увоз (
"фмт"
"нет/хттп"
)фунцглавни() {
// УРЛ који желите да проверите
екамплеУРЛ := " https://www.example.com"// Направите ХТТП ГЕТ захтев за УРЛ
одговор, грешка := хттп. Узми (екамплеУРЛ)ако ерр != нула {
фмт. Принтлн (грешка)
повратак
}
одложити одговор. Тело. Близу()
// Проверите статусни код одговора
ако одговор. СтатусЦоде == хттп. СтатусОК {
фмт. Принтлн(„УРЛ постоји.“)
} друго {
фмт. Принтлн(„УРЛ не постоји.“)
}
}
Тхе главни функција чини а ДОБИТИ захтев за екамплеУРЛ помоћу Добити функција на хттп пакет. Та функција враћа инстанцу одговора и тип грешке. Програм се завршава са ако изјаву да потврдите постојање веб локације тако што ћете проверити ХТТП статусни код против СтатусОк константа из хттп пакет.
Овај приступ вам омогућава да предузмете радње на основу резултата провере, као што је преусмеравање корисника на другу страницу, приказујући поруку о грешци или поново покушавајући захтев након одређеног раздобље.
Кодирање и декодирање параметара УРЛ-а
Тхе урл пакет пружа Енцоде метод за кодирање параметара УРЛ-а. Тхе Енцоде функција проценат-кодира специјалне знакове и размаке у УРЛ параметрима.
увоз (
"фмт"
"нет/урл"
)фунцглавни() {
// креирамо нови УРЛ. Вредности струцт
парамс := урл. вредности{}// додаје вредности структури
парамс. Додати("име", "Џон Смит")
парамс. Додати("старост", "30")
парамс. Додати("пол", "Мушки")// кодирање структуре у стринг
енцодедПарамс := парамс. кодирај()
фмт. Принтлн (енцодедПарамс)
// Излаз: "аге=30&гендер=мале&наме=Јохн+Смитх"
}
Тхе главни функција ствара нову Вредности струцт инстанца оф тхе урл пакет, и Додати метод инстанце структуре додаје парове кључ/вредност података инстанци структуре.
Тхе Енцоде метода конвертује пар кључ-вредност у формат стринга УРЛ-а „кључ1=вредност1&кључ2=вредност2&кључ3=вредност3“.
Можете декодирати кодирани УРЛ стринг помоћу ПарсеКуери функција на урл пакет.
увоз (
"фмт"
"нет/урл"
)фунцглавни() {
// кодирани низ параметара УРЛ-а
енцодедПарамс := "аге=30&гендер=мале&наме=Јохн+Смитх"
// рашчлањујемо кодирани стринг у урл. Вредности струцт
парамс, ерр := урл. ПарсеКуери (енцодедПарамс)
ако ерр != нула {
фмт. Принтлн (грешка)
}
// штампа структуру
фмт. Принтлн (парамс)
// Излаз: мапа[старост:[30] пол:[мушко] име:[Јохн Смитх]]
}
Тхе енцодедПараметер променљива је кодирани УРЛ стринг. Тхе ПарсеКуери функција преузима у енцодедПараметер променљиву и враћа декодирани УРЛ стринг и грешку.
Ови пакети Го могу да подигну вашу игру рутирања на следећи ниво
УРЛ адресе које користите за странице ваше веб апликације доприносе њеном учинку и видљивости на претраживачима. Веб рутирање је процес усмеравања долазних захтева на одговарајућу функцију руковаоца на основу УРЛ-а.
Можете да усмерите користећи хттп пакет или популарне пакете треће стране као што су Горилла Мук, Цхи, Пат или Хттпроутер. Ови пакети чине рутирање лакшим од хттп пакета тако што апстрахују неке његове сложености.