[Go] Создание API аутентификации с помощью Golang (перевод)
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
Небольшая статья для начинающих о том, как создать API аутентификацию с помощью Gо.
Требования
Необходимо установить Go на ваш компьютер.
Приступим к работе
Прежде всего создадим новый проект. Создайте новый файл с именем main.go и введите стартовый код:
package main
import (
"fmt"
"net/http"
"github.com/gin-gonic/gin"
)
Методы POST и GET
Чтобы обрабатывать запросы GET и POST, создадим GetMethod и PostMethod:
func PostMethod(c *gin.Context) {
fmt.Println("\napi.go 'PostMethod' called")
message := "PostMethod called"
c.JSON(http.StatusOK, message)
}
func GetMethod(c *gin.Context) {
fmt.Println("\napi.go 'GetMethod' called")
message := "GetMethod called"
c.JSON(http.StatusOK, message)
}
Основная функция
Необходимо создать роутер Gin для обработки всех запросов:
func main() {
router := gin.Default()
}
После этого добавим GetMethod и PostMethod:
func main() {
router := gin.Default()
router.POST("/", PostMethod)
router.GET("/", GetMethod)
}
И, в завершение всего, добавляем порт, который сервер будет слушать и на котором он будет запускаться:
func main() {
router := gin.Default()
router.POST("/", PostMethod)
router.GET("/", GetMethod)
listenPort := "4000"
router.Run(":"+listenPort)
}
Теперь запустим код, чтобы проверить, работает ли сервер.
Аутентификация
Когда базовый веб-сервер настроен, начнем добавлять элементы для API аутентификации.
Начнем с func main():
func main() {
router := gin.Default()
subRouterAuthenticated := router.Group("/api/v1/PersonId", gin.BasicAuth(gin.Accounts{
"admin": "adminpass",
}))
listenPort := "1357"
router.Run(":"+listenPort)
}
Теперь передайте query-параметры:
func main() {
router := gin.Default()
subRouterAuthenticated := router.Group("/api/v1/PersonId", gin.BasicAuth(gin.Accounts{
"admin": "adminpass",
}))
subRouterAuthenticated.GET("/:IdValue", GetMethod)
listenPort := "1357"
router.Run(":"+listenPort)
}
Настройка GetMethod()
GetMethod() запрашивает и выводит Person IdValue из query-параметра, переданного в URL-адресе API:
func GetMethod(c *gin.Context) {
fmt.Println("\n'GetMethod' called")
IdValue := c.Params.ByName("IdValue")
message := "GetMethod Called With Param: " + IdValue
c.JSON(http.StatusOK, message)
ReqPayload := make([]byte, 1024)
ReqPayload, err := c.GetRawData()
if err != nil {
fmt.Println(err)
return
}
fmt.Println("Request Payload Data: ", string(ReqPayload))
}
Полный пример:
package main
import (
"fmt"
"net/http"
"github.com/gin-gonic/gin"
)
func GetMethod(c *gin.Context) {
fmt.Println("\n'GetMethod' called")
IdValue := c.Params.ByName("IdValue")
message := "GetMethod Called With Param: " + IdValue
c.JSON(http.StatusOK, message)
ReqPayload := make([]byte, 1024)
ReqPayload, err := c.GetRawData()
if err != nil {
fmt.Println(err)
return
}
fmt.Println("Request Payload Data: ", string(ReqPayload))
}
func main() {
router := gin.Default()
subRouterAuthenticated := router.Group("/api/v1/PersonId", gin.BasicAuth(gin.Accounts{
"admin": "adminpass",
}))
subRouterAuthenticated.GET("/:IdValue", GetMethod)
listenPort := "1357"
router.Run(":"+listenPort)
}
Тестирование с помощью ngrok
Сначала запустим наше приложение на Go:
go run main.go
1. Скачайте ngrok.
2. Распакуйте исполняемый файл ngrok в папку на сервере.
3. Запустите ngrok на порту 1357 (который вы указали в коде):
./ngrok http 1357
Результат:
ngrok by @emmyc (Ctrl+C to quit)
Session Status online
Session Expires 7 hours, 12 minutes
Version 2.3.35
Region Netherlands (nl)
Web Interface http://127.0.0.1:4040
Forwarding http://ca6d2c4cee3e.ngrok.io -> http://localhost:4000
Forwarding https://ca6d2c4cee3e.ngrok.io -> http://localhost:4000
Команда сгенерирует случайный динамический URL-адрес, по которому вы можете протестировать свой API и войти в систему со своими данными для входа, чтобы проверить, все ли работает.
После входа вы увидите:
GetMethod Called With Param: Id456
Всё работает!
Заключение
В этом небольшом руководстве показано, как создать базовый Go API с помощью Gin. Кроме того, мы узнали, как создать приложение для аутентификации и протестировать его с помощью ngrok.
Надеюсь, этих знаний будет достаточно, чтобы создать собственное приложение с аутентификацией на Go.
===========
Источник:
habr.com
===========
===========
Автор оригинала: Bryan Dijkhuizen
===========Похожие новости:
- [Анализ и проектирование систем, Go] Telegram на go: часть 1, парсим схему
- [Django] Tutorial. Deploying Django project to Heroku and storing static content on AWS S3: basic scenario from start to finish
- [Искусственный интеллект, IT-компании] Google просит сотрудников позитивней отзываться про ИИ
- [Информационная безопасность, Google Chrome, Хранение данных, Браузеры] Google Chrome тестирует увеличение размера кэша для повышения производительности
- [Гаджеты, Компьютерное железо, Игры и игровые приставки] ODROID-Go Super — игровая консоль на Ubuntu за $80
- [API, Геоинформационные сервисы] Насколько точной может быть IP-геолокация? (перевод)
- [Open source, Виртуализация, Kubernetes, Openshift] 7 вещей, которые нужно проработать, прежде чем запускать OpenShift в продакшн
- [Программирование, ReactJS] Создание React-компонентов с помощью Hygen (перевод)
- [JavaScript, Google Chrome, Расширения для браузеров, Хранение данных, Хранилища данных] Использование Redux в MV3 расширениях Chrome (перевод)
- [Разработка веб-сайтов, Программирование, Dart, Flutter] DartUP 2020: итоги и видеозаписи докладов
Теги для поиска: #_go, #_api, #_golang, #_autentifikatsija (аутентификация), #_blog_kompanii_timeweb (
Блог компании Timeweb
), #_go
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 23-Ноя 04:47
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
Небольшая статья для начинающих о том, как создать API аутентификацию с помощью Gо.
Требования Необходимо установить Go на ваш компьютер. Приступим к работе Прежде всего создадим новый проект. Создайте новый файл с именем main.go и введите стартовый код: package main
import ( "fmt" "net/http" "github.com/gin-gonic/gin" ) Методы POST и GET Чтобы обрабатывать запросы GET и POST, создадим GetMethod и PostMethod: func PostMethod(c *gin.Context) {
fmt.Println("\napi.go 'PostMethod' called") message := "PostMethod called" c.JSON(http.StatusOK, message) } func GetMethod(c *gin.Context) { fmt.Println("\napi.go 'GetMethod' called") message := "GetMethod called" c.JSON(http.StatusOK, message) } Основная функция Необходимо создать роутер Gin для обработки всех запросов: func main() {
router := gin.Default() } После этого добавим GetMethod и PostMethod: func main() {
router := gin.Default() router.POST("/", PostMethod) router.GET("/", GetMethod) } И, в завершение всего, добавляем порт, который сервер будет слушать и на котором он будет запускаться: func main() {
router := gin.Default() router.POST("/", PostMethod) router.GET("/", GetMethod) listenPort := "4000" router.Run(":"+listenPort) } Теперь запустим код, чтобы проверить, работает ли сервер. Аутентификация Когда базовый веб-сервер настроен, начнем добавлять элементы для API аутентификации. Начнем с func main(): func main() {
router := gin.Default() subRouterAuthenticated := router.Group("/api/v1/PersonId", gin.BasicAuth(gin.Accounts{ "admin": "adminpass", })) listenPort := "1357" router.Run(":"+listenPort) } Теперь передайте query-параметры: func main() {
router := gin.Default() subRouterAuthenticated := router.Group("/api/v1/PersonId", gin.BasicAuth(gin.Accounts{ "admin": "adminpass", })) subRouterAuthenticated.GET("/:IdValue", GetMethod) listenPort := "1357" router.Run(":"+listenPort) } Настройка GetMethod() GetMethod() запрашивает и выводит Person IdValue из query-параметра, переданного в URL-адресе API: func GetMethod(c *gin.Context) {
fmt.Println("\n'GetMethod' called") IdValue := c.Params.ByName("IdValue") message := "GetMethod Called With Param: " + IdValue c.JSON(http.StatusOK, message) ReqPayload := make([]byte, 1024) ReqPayload, err := c.GetRawData() if err != nil { fmt.Println(err) return } fmt.Println("Request Payload Data: ", string(ReqPayload)) } Полный пример: package main
import ( "fmt" "net/http" "github.com/gin-gonic/gin" ) func GetMethod(c *gin.Context) { fmt.Println("\n'GetMethod' called") IdValue := c.Params.ByName("IdValue") message := "GetMethod Called With Param: " + IdValue c.JSON(http.StatusOK, message) ReqPayload := make([]byte, 1024) ReqPayload, err := c.GetRawData() if err != nil { fmt.Println(err) return } fmt.Println("Request Payload Data: ", string(ReqPayload)) } func main() { router := gin.Default() subRouterAuthenticated := router.Group("/api/v1/PersonId", gin.BasicAuth(gin.Accounts{ "admin": "adminpass", })) subRouterAuthenticated.GET("/:IdValue", GetMethod) listenPort := "1357" router.Run(":"+listenPort) } Тестирование с помощью ngrok Сначала запустим наше приложение на Go: go run main.go
1. Скачайте ngrok. 2. Распакуйте исполняемый файл ngrok в папку на сервере. 3. Запустите ngrok на порту 1357 (который вы указали в коде): ./ngrok http 1357
Результат: ngrok by @emmyc (Ctrl+C to quit) Session Status online Session Expires 7 hours, 12 minutes Version 2.3.35 Region Netherlands (nl) Web Interface http://127.0.0.1:4040 Forwarding http://ca6d2c4cee3e.ngrok.io -> http://localhost:4000 Forwarding https://ca6d2c4cee3e.ngrok.io -> http://localhost:4000 Команда сгенерирует случайный динамический URL-адрес, по которому вы можете протестировать свой API и войти в систему со своими данными для входа, чтобы проверить, все ли работает. После входа вы увидите: GetMethod Called With Param: Id456
Всё работает! Заключение В этом небольшом руководстве показано, как создать базовый Go API с помощью Gin. Кроме того, мы узнали, как создать приложение для аутентификации и протестировать его с помощью ngrok. Надеюсь, этих знаний будет достаточно, чтобы создать собственное приложение с аутентификацией на Go. =========== Источник: habr.com =========== =========== Автор оригинала: Bryan Dijkhuizen ===========Похожие новости:
Блог компании Timeweb ), #_go |
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 23-Ноя 04:47
Часовой пояс: UTC + 5