DevGang
Авторизоваться

Пример подключения приложения к Neon (Go)

Узнайте, как использовать Go с Neon, изучив демонстрационный API Go, созданный с помощью драйвера Gin plus PQ, а также то, как этот API используется для создания продуктов для электронных велосипедов и управления ими. Электронные велосипеды, несомненно, являются одним из лучших способов исследовать местность вблизи, легко преодолевая большую территорию.

Обзор

Чтобы подключить базу данных Neon PostgreSQL к примеру приложения E-Bike Go API, созданного с использованием инфраструктуры маршрутизации Gin и драйвера PQ, выполните следующие шаги:

  • Настройте свою среду 
  • Настройте базу данных Postgres с помощью консоли Neon, Neon CLI или Psql.
  • Создайте и запустите свой Go API.
  • Имея учетную запись Neon, базу данных и приложение Go API, вы можете выполнять базовые операции CRUD, выполняя вызовы API с помощью любого из клиентов REST API, включая cURL и POSTMAN. Кроме того, такое приложение, как приложение Vue или React, может подключаться к конечной точке GetProducts для получения и отображения всех продуктов в таблице базы данных.

Предварительные условия

  • GO версии 1.23 или выше.

Создайте базу данных Neon Postges

  • Если у вас нет учетной записи Neon, нажмите здесь, чтобы зарегистрировать учетную запись.
  • На странице Консоль нажмите Создать проект.
  • На странице «Создать проект» по умолчанию выбирается самая высокая версия postgres. Назовите проект goebike, а базу данных — Productdb. Выберите нужный регион.
  • Нажмите «Создать проект», чтобы создать проект Neon с базой данных.
  • Ваш проект Neon и база данных будут созданы всего за несколько минут.
  • После создания базы данных Neon щелкните меню Редактор SQL и выполните следующие три команды, чтобы удалить существующую демонстрационную таблицу, создать новую демонстрационную таблицу и вставить некоторые данные:
DROP TABLE IF EXISTS products;
CREATE TABLE products (
  id            SERIAL PRIMARY KEY,
  name          VARCHAR(128) NOT NULL,
  description   VARCHAR(255) NOT NULL,
  image         VARCHAR(128) NOT NULL,
  category      VARCHAR(128) NOT NULL,
  price         DECIMAL(5,2) NOT NULL
);

INSERT INTO products
  (name, description, image, category, price)
VALUES
  ('ELECTRA X2', 'Lorem ipsum dolor sit amet, consectetur adipiscing elit', 'https://s3-us-west-2.amazonaws.com/dev-or-devrl-s3-bucket/sample-apps/ebikes/electrax2.jpg', 'Mountain', 56.99),
  ('ELECTRA X3', 'Lorem ipsum dolor sit amet, consectetur adipiscing elit', 'https://s3-us-west-2.amazonaws.com/dev-or-devrl-s3-bucket/sample-apps/ebikes/electrax3.jpg', 'Mountain', 63.99),
  ('ELECTRA X1', 'Lorem ipsum dolor sit amet, consectetur adipiscing elit', 'https://s3-us-west-2.amazonaws.com/dev-or-devrl-s3-bucket/sample-apps/ebikes/electrax1.jpg', 'Mountain', 34.98);
  • В строке меню нажмите «Быстрый запуск», выберите предпочтительный метод подключения, чтобы получить соответствующую строку подключения. В этом документе в качестве примера используется клиент Postgres. Скопируйте строку подключения для Postgres, она понадобится вам в следующем разделе.

Запустите пример Go API для подключения к Neon.

В этом разделе показано, как запустить пример кода приложения Go API и подключиться к Neon.

Шаг 1. Клонируйте репозиторий примера приложения.

Выполните следующие команды в окне терминала, чтобы клонировать репозиторий примера кода:

git clone https://github.com/mikoaro/go-gin-getting-started.git
cd go-gin-getting-started.git

Откройте проект в VS Code или любом другом редакторе по вашему выбору.

Шаг 2. Запустите код и проверьте результат.

  • Выполните следующую команду, чтобы скопировать .env.example и переименовать его в .env:
cp .env.example .env
  • Скопируйте и вставьте соответствующую строку подключения в файл .env. Результат примера следующий:
DATABASE_URL='{}'

Обязательно замените заполнители {} параметрами подключения для Postgres, полученными из меню быстрого запуска.

  • Сохраните файл .env.
  • Откройте терминал VS Code и запустите проект, используя следующие команды:
go mod tidy
go run .

Следующий вывод будет напечатан в терминале.

Примеры фрагментов кода и тестирование с помощью POSTMAN и Vue

Вы можете обратиться к следующим примерам фрагментов кода, чтобы завершить разработку собственного приложения.

Полный пример кода и инструкции по его запуску можно найти в репозитории.

Подключитесь к Neon и настройте маршрутизацию

func main() {
    err := godotenv.Load()
    if err != nil {
        log.Fatal("Error loading .env file")
    }

    connectionStr := os.Getenv("DATABASE_URL")

    db, err = sql.Open("postgres", connectionStr)
    if err != nil {
        log.Fatal(err)
    }
    defer db.Close()

    pingErr := db.Ping()
    if pingErr != nil {
        log.Fatal(pingErr)
    }

    fmt.Println("Successfully connected!")

    // Configure CORS
    config := cors.DefaultConfig()
    config.AllowAllOrigins = true
    config.AllowMethods = []string{"POST", "GET", "PUT", "OPTIONS"}
    config.AllowHeaders = []string{"Origin", "Content-Type", "Authorization", "Accept", "User-Agent", "Cache-Control", "Pragma"}
    config.ExposeHeaders = []string{"Content-Length"}
    config.AllowCredentials = true
    config.MaxAge = 12 * time.Hour


    // Setup routes
    router := gin.Default()
    router.Use(cors.New(config))
    router.GET("/products", GetProducts)
    router.GET("/products/:productId", GetSingleProduct)
    router.POST("/products", CreateProduct)
    router.PUT("/products/:productId", UpdateProduct)
    router.DELETE("/products/:productId", DeleteProduct)


    // Run the router
    router.Run()

}

Данные запроса

func GetProducts(c *gin.Context) {
    query := `SELECT * FROM products`
    rows, err := db.Query(query)
    if err != nil {
        log.Fatal("(GetProducts) db.Query", err)
    }
    defer rows.Close()

    products := []Product{}
    for rows.Next() {
        var product Product
        err := rows.Scan(&product.Id, &product.Name, &product.Description, &product.Image, &product.Category, &product.Price)
        if err != nil {
            log.Fatal("(GetProducts) rows.Scan", err)
        }
        products = append(products, product)
    }

    c.JSON(http.StatusOK, products)
}

Вот пример отправки запроса GET по указанному маршруту, чтобы получить все электронные велосипеды с помощью Postman:

Вот пример отправки запроса GET по указанному маршруту для получения электронного велосипеда по его идентификатору:

Приложение GoeBike Vue

Вскоре

Если вы ищете развлечения, то обратите внимание на аренду и туры GoeBike. Это веселое и легкое занятие на свежем воздухе, которым может наслаждаться вся семья.

Электрические велосипеды — один из лучших способов исследовать местность. Вы можете легко преодолеть большую территорию, при этом внимательно рассматривая все пейзажи и достопримечательности.

Источник:

#Golang
Комментарии
Чтобы оставить комментарий, необходимо авторизоваться

Присоединяйся в тусовку

В этом месте могла бы быть ваша реклама

Разместить рекламу