РЕСТфул АПИ-ји су популарне архитектуре за пренос података широм веба. РЕСТфул АПИ-ји обично користе ХТТП, што их чини погодним за случајеве у којима је апатридност важна.
Као и сваки језик на страни сервера, можете да комуницирате са ХТТП протоколом и правите ХТТП захтеве у Го.
Почетак употребе РЕСТфул АПИ-ја у Го
Тхе хттп пакет пружа већину функционалности које су вам потребне за интеракцију са ХТТП протоколом у Го. Ово укључује прављење ХТТП захтева, а то вам није нужно спољне зависности, као што је Гин или база података.
Можете користити хттп пакет за коришћење АПИ-ја и преузимање страница за стругање веба у Го.
Увезите ове пакете да бисте почели да правите ХТТП захтеве у Го.
увоз (
"бајтови"
"кодирање/јсон"
"фмт"
"ио/иоутил"
"нет/хттп"
)
Користићете бајтова пакет за манипулисање резовима бајтова, јсон пакет за форматирање података захтева, фмт пакет за писање у стандардни излаз, иоутил пакет за улаз и излаз, и хттп пакет за слање захтева.
Једноставан ГЕТ захтев у Го
Типично ДОБИТИ захтева читање података са сервера и може да обезбеди параметре за податке у зависности од природе и спецификације АПИ-ја.
У овом водичу ћете научити како да користите РЕСТфул АПИ-је користећи једноставан хттпбин сервис захтева и одговора.
Ево примера прављења ХТТП захтева са Го:
урл := "хттпс://httpbin.org/get"
одговор, грешка := хттп. Узми (урл)
ако ерр != нула {
фмт. Принтф("Дошло је до грешке из АПИ захтева %с", грешка. Грешка())
} друго {
// наставља [1] ...
}
Тхе урл променљива је крајња тачка којој шаљете захтев. Тхе Добити метода преузима УРЛ, извршава Добити захтева и враћа одговор, укључујући његова заглавља и тело.
Можете да обрађујете све грешке из захтева у зависности од ваших захтева. Ако нема грешака, можете наставити да извлачите потребне информације из Добити захтев.
} друго {
//... [1] наставак
респонсеДата, ерр := иоутил. Прочитај све (одговор. тело)
ако ерр != нула {
фмт. Принтф("Дошло је до грешке при рашчлањивању тела захтева %с", грешка. Грешка())
} друго {
// наставља [2] ...
}
}
Одговор је Тело поље садржи тело одговора. Помоћу РеадАлл методом иоутил пакет, можете да прочитате тело одговора и да обрађујете могуће грешке.
} друго {
//... [2] наставак
фмт. Принтлн(низ(респонсеДата))
}
Тхе друго изјава штампа тело одговора на вашу конзолу ако нема грешака из операције читања.
Ево резултата ДОБИТИ захтев до хттпбин крајње тачке.
Једноставан ПОСТ захтев у Го
Типични ПОСТ захтеви обезбеђују корисне податке серверу, а сервер враћа одговор у зависности од операције.
Ево једноставне структуре за кодирање ЈСОН корисног оптерећења на сервер као део ПОСТ захтева.
тип ЈСОН струцт {
инфо низ
порука низ
}
Тхе ЈСОН структура има инфо и порука стринг поља, а ви ћете иницијализовати инстанцу структуре за захтев.
урл := "хттпс://httpbin.org/post"
јсонИнстанце := ЈСОН {
инфо: "очекујем успех",
порука: „захтев треба повратак ",
}
Тхе урл променљива чува крајњу тачку ПОСТ захтева са веб локације хттпбин. Тхе јсонИнстанце променљива је инстанца ЈСОН структуре коју можете да користите за складиштење и слање структурираних података.
Можете користити маршал метода из јсон пакет за форматирање ЈСОН за захтев.
јсонДата, ерр := јсон. Маршал (јсонИнстанце)
ако ерр != нула {
фмт. Принтлн("дошло је до грешке са ЈСОН-ом", грешка. Грешка())
} друго {
// наставља [1] ...
}
Тхе маршал метод такође враћа грешку коју можете да решите. Ако нема грешака са операцијом распоређивања ЈСОН-а, можете да наставите са ПОСТ захтевом.
Можете користити пошта метод за прављење ПОСТ захтева. Тхе пошта метода узима крајњу тачку УРЛ-а, тип садржаја захтева и бафер корисног оптерећења. Враћа одговор и грешку.
} друго {
//... наставак [1]
одговор, грешка := хттп. Пост (урл, "апплицатион/јсон", бајтови. НевБуффер (јсонДата))
ако ерр != нула {
фмт. Принтлн("дошло је до грешке са захтевом", грешка. Грешка())
} друго {
// наставља [2] ...
}
}
Опет, можете прочитати тело одговора користећи РеадАлл методом иоутил пакет:
} друго {
//... наставак [2]
подаци, грешка := иоутил. Прочитај све (одговор. тело)
ако ерр != нула {
фмт. Принтлн("дошло је до грешке при читању тела захтева", грешка. Грешка())
} друго {
фмт. Принтлн(низ(подаци))
}
}
Тхе Принтлн изјава шаље резултат ХТТП захтева на вашу конзолу.
Као што је хттпбин документација наводи, ова крајња тачка ПОСТ-а враћа податке захтева које јој пошаљете.
Прављење веб апликација у Го је лако
Можете да правите веб апликације са различитим функцијама у Го без зависности.
Тхе хттп пакет има функције које ће вам требати за већину ваших операција. Можете користити овај пакет са другима попут јсон пакет за ЈСОН операције, контекст пакет за сигнализацију и пакет шаблона за шаблонирање. Постоји много других пакета у стандардној библиотеци.