Русский
Русский
English
Статистика
Реклама

Перевод Создание API аутентификации с помощью Golang

Небольшая статья для начинающих о том, как создать API аутентификацию с помощью Gо.




Требования


Необходимо установить Go на ваш компьютер.

Приступим к работе


Прежде всего создадим новый проект. Создайте новый файл с именем main.go и введите стартовый код:

package mainimport (  "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 mainimport (  "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
К списку статей
Опубликовано: 27.12.2020 12:16:52
0

Сейчас читают

Комментариев (0)
Имя
Электронная почта

Блог компании timeweb

Go

Api

Golang

Аутентификация

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru