Пример подключения приложения к 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, нажмите здесь, чтобы зарегистрировать учетную запись.
- Войдите в свою учетную запись 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. Это веселое и легкое занятие на свежем воздухе, которым может наслаждаться вся семья.
Электрические велосипеды — один из лучших способов исследовать местность. Вы можете легко преодолеть большую территорию, при этом внимательно рассматривая все пейзажи и достопримечательности.