Добро пожаловать на BlackSAMP - ФОРУМ

  • Приватные и секретные разделы доступны только зарегистрированным пользователям.

    Вся важная информация в нашем ТГ: t.me/gtablack

    На данном форуме запрещено публиковать контент нарушающий Российское законодательство, за это последует блокировка ФА.

Гайд Погружаемся в Golang и Fiber. Пишем http сервер.

И так . Для начала разберем , что такое http и как он работает .

HTTP — сетевой протокол прикладного уровня, который изначально предназначался для получения с серверов гипертекстовых документов в формате HTML, а с течением времени стал универсальным средством взаимодействия между узлами как Всемирной паутины, так и изолированных веб-инфраструктур.
1000371901.jpg
Какие http запросы бывают ?
1. GET - используется для получения данных с сервера.
2. POST - используется для отправки данных на сервер.
3. PUT - используется для обновления данных на сервере.
4. DELETE - используется для удаления данных на сервере.
5. HEAD - используется для получения только заголовков ответа, без тела.
6. OPTIONS - используется для получения информации о доступных методах HTTP для данного ресурса.


Приступим к написанию . Можно использовать стандартную библиотеку Golang - net/http , но я буду использовать полноценный фреймворк Fiber .

Создадим модуль и скачаем fiber
go mod init fiberapp go get github.com/gofiber/fiber /v2 go mod tidy

Откроем main.go в любом удобном редакторе кода или в IDE
Код:
package main

import (
    "github.com/gofiber/fiber/v2"
)

func main() {
    app := fiber.New() // создадим новое приложение
    // Обработчик главной страницы
    app.Get("/", func(c *fiber.Ctx) error {
        return c.SendString("Hello, World!")
    })

    app.Listen(":3000") // порт на котором будет приложение
}
Этот пример показывает как создать приложение и создать обработчик главной страницы .

Но мы же не будем каждый раз отправлять только текст , нам надо будет подгружать html страницы .
Для этого создадим views/index.html
HTML:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>{{.Title}}</title>
</head>
<body>
    <h1>{{.Message}}</h1>
</body>
</html>
А в main.go
Код:
package main

import (
    "github.com/gofiber/fiber/v2"
    "html/template"
    "os"
)

func main() {
    app := fiber.New()

    // Настройка шаблонизатора
    app.Settings.Views = template.Must(template.ParseGlob("views/*.html"))

    // Обработка GET запроса для главной страницы
    app.Get("/", func(c *fiber.Ctx) error {
        return c.Render("index", fiber.Map{
            "Title":   "Index Page",
            "Message": "Hello  World!",
        })
    })

    app.Listen(":3000")
}
В get запросы можно передавать и параметры .
Для этого в main.go создадим ещё один обработчик страницы , я буду использовать user .
Код:
app.Get("/user/:name", func(c *fiber.Ctx) error {
        name := c.Params("name") // Извлечение параметра name из url
        return c.SendString("User Name: " + name)
})

Пойдем дальше и научимся работать с Post запросами .
Код:
package main

import (
    "github.com/gofiber/fiber/v2"
)

func main() {
    app := fiber.New()

    app.Get("/", func(c *fiber.Ctx) error {
        // Лучше так не делать , а использовать подгрузку html шаблона
        return c.SendString(`
            <form action="/submit" method="POST">
                <input type="text" name="name" placeholder="Введите свой пароль " required>
                <input type="email" name="email" placeholder="Введите свою почту" required>
                <button type="submit">Submit</button>
            </form>
        `)
    })

    app.Post("/submit", func(c *fiber.Ctx) error {
        name := c.FormValue("name")   // Извлечение значения поля имени
        email := c.FormValue("email") // Извлечение значения поля почты

        // Установка куки
        c.Cookie(&fiber.Cookie{
            Name:  "name",
            Value: name,
            Path:  "/",
            MaxAge: 3600, // Время жизни куки в секундах
        })

        return c.SendString("Name: " + name + ", Email: " + email)
    })

    app.Listen(":3000")
}
 
Последнее редактирование:
Сверху Снизу