برنامه نویسی

ساخت API بلاگ با Golang با استفاده از Gin and Gorm (قسمت 1)

Summarize this content to 400 words in Persian Lang

بررسی اجمالی پروژه

1. آنچه خواهید ساخت

شما یک وبلاگ API با قابلیت های زیر می سازید:

ثبت نام با نام کاربری، ایمیل و رمز عبور
با ایمیل و رمز عبور وارد شوید
پست جدید ایجاد کنید
به روز رسانی پست
یک پست خاص را بازیابی کنید
حذف پست

2. پیش نیازها

قبل از غواصی، مطمئن شوید که پیش نیازهای زیر را دارید:

برو درک اولیه Go و JWTsپستچیGitpsqlPostgreSQL روی دستگاه شما نصب شده است

راه اندازی پروژه

برای شروع پروژه مراحل زیر را دنبال کنید:

یک پوشه جدید به نام blog_api در دایرکتوری توسعه خود ایجاد کنید و در آن حرکت کنید.

mkdir blog_api
cd blog_api

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

با دستور زیر یک ماژول Go را راه اندازی کنید.

go mod init blog_api

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

این تولید یک go.mod فایل برای ردیابی وابستگی های پروژه شما.

Dependencies را نصب کنید

این پروژه از چارچوب جین استفاده می کند. دستور زیر را برای نصب gin و سایر وابستگی‌هایی که استفاده خواهیم کرد اجرا کنید

go get github.com/gin-gonic/gin
go get github.com/jinzhu/gorm
go get golang.org/x/crypto/bcrypt
github.com/golang-jwt/jwt/v5

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

اکنون دایرکتوری های زیر را ایجاد کنید:

داخلی
داخلی/معتبر
داخلی / هندلر
داخلی/ذخیره سازی
داخلی/روتر
داخلی/مدل
پیکربندی
پایگاه داده
main.go

اتصال به Postgres

من فرض می کنم که شما postgres را قبلاً نصب کرده اید، اگر آن را نصب نکنیدیک پایگاه داده به نام blog_db ایجاد کنید

CREATE DATABASE blog_db;

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

در پوشه پیکربندی خود یک فایل .env در دایرکتوری ریشه خود ایجاد کنید تا جزئیات پایگاه داده ما ذخیره شود

config/.env

DB_DSN=host=localhost user=yourusername password= your_password dbname=blog_db port=5432 sslmode=disable

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

ایجاد مدل ها

ایجاد مدل برای User و Post

در پوشه داخلی/مدل خود، یک user.go و یک فایل post.go ایجاد کنید

Internal/model/user.go

package model

import “gorm.io/gorm”

type User struct {
Username string `gorm:”unique; not null”`
Email string `gorm:”unique; not null”`
Password string `gorm:”not null”`
Posts []Post `gorm:”foreignKey:AuthorID”`
}

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

داخلی/مدل/پست..برو

package model

import “gorm.io/gorm”

type Post struct {
gorm.Model

Title string `gorm:”not null”`
Content string `gorm:”not null”`
AuthorID uint
Author User `gorm:”foreignKey:AuthorID”`
}

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

راه اندازی پایگاه داده

ما اتصال پایگاه داده را با استفاده از gorm راه اندازی می کنیم. در پوشه داخلی/ذخیره سازی خود، یک فایل جدید به نام database.go ایجاد کنید.

interior/storage/database.go

package storage

import (
“log”
“os”
“blog-api/internal/model”
“gorm.io/driver/postgres”
“gorm.io/gorm”
)

DB *gorm.DB

func InitDB()
{
dsn := os.Getenv(“DB_DSN”)
db, err := gorm.open(postgres.Open(dsn), &gorm.Config{})

if err != nil {
log.Fatal(“Failed to connect to database”, err)

}

db.Automigrate(&model.User{}, &model.Post{})
DB = db
}

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

اکنون فایل main.go را به صورت زیر تنظیم کنید:

package main

import (
“log”
“net/http”

“blog-api/internal/router”
“blog-api/internal/storage”
“github.com/joho/godotenv”
)

func main() {
err := godotenv.Load(“config/.env)

if err != nil {
log.Fatal(“Error loading .env file)

}

//initialize database
storage.InitDB()

//setup router
r := router.setupRouter()
log.Fatal(http.ListenAndServe(“:8080”, r))

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

توجه: setupRouter یک تابع در router.go ما است که روتر برنامه ما را راه اندازی می کند، در نظر داشته باشید، ما روتر خود را در قسمت بعدی وبلاگ راه اندازی خواهیم کرد.

Eun برنامه

برنامه را با استفاده از دستور اجرا کنید

go run main.go

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید


بررسی اجمالی پروژه

1. آنچه خواهید ساخت

شما یک وبلاگ API با قابلیت های زیر می سازید:

  • ثبت نام با نام کاربری، ایمیل و رمز عبور

  • با ایمیل و رمز عبور وارد شوید

  • پست جدید ایجاد کنید

  • به روز رسانی پست

  • یک پست خاص را بازیابی کنید

  • حذف پست

2. پیش نیازها

قبل از غواصی، مطمئن شوید که پیش نیازهای زیر را دارید:

برو
درک اولیه Go و JWTs
پستچی
Git
psql
PostgreSQL روی دستگاه شما نصب شده است

راه اندازی پروژه

برای شروع پروژه مراحل زیر را دنبال کنید:

  1. یک پوشه جدید به نام blog_api در دایرکتوری توسعه خود ایجاد کنید و در آن حرکت کنید.
mkdir blog_api
cd blog_api
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

  1. با دستور زیر یک ماژول Go را راه اندازی کنید.
go mod init blog_api
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

این تولید یک go.mod فایل برای ردیابی وابستگی های پروژه شما.

  1. Dependencies را نصب کنید

این پروژه از چارچوب جین استفاده می کند. دستور زیر را برای نصب gin و سایر وابستگی‌هایی که استفاده خواهیم کرد اجرا کنید


go get github.com/gin-gonic/gin
go get github.com/jinzhu/gorm
go get golang.org/x/crypto/bcrypt
github.com/golang-jwt/jwt/v5

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

اکنون دایرکتوری های زیر را ایجاد کنید:

  • داخلی

  • داخلی/معتبر

  • داخلی / هندلر

  • داخلی/ذخیره سازی

  • داخلی/روتر

  • داخلی/مدل

  • پیکربندی

  • پایگاه داده

  • main.go

اتصال به Postgres

من فرض می کنم که شما postgres را قبلاً نصب کرده اید، اگر آن را نصب نکنید
یک پایگاه داده به نام blog_db ایجاد کنید

CREATE DATABASE blog_db;
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

در پوشه پیکربندی خود یک فایل .env در دایرکتوری ریشه خود ایجاد کنید تا جزئیات پایگاه داده ما ذخیره شود

config/.env

DB_DSN=host=localhost user=yourusername password= your_password dbname=blog_db port=5432 sslmode=disable
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

ایجاد مدل ها

ایجاد مدل برای User و Post

در پوشه داخلی/مدل خود، یک user.go و یک فایل post.go ایجاد کنید

Internal/model/user.go

package model

import "gorm.io/gorm"

type User struct {
Username   string    `gorm:"unique; not null"`
Email      string    `gorm:"unique; not null"`
Password   string    `gorm:"not null"`
Posts      []Post    `gorm:"foreignKey:AuthorID"`
}

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

داخلی/مدل/پست..برو

package model

import "gorm.io/gorm"

type Post struct {
    gorm.Model

    Title    string `gorm:"not null"`
    Content  string `gorm:"not null"`
    AuthorID uint
    Author   User `gorm:"foreignKey:AuthorID"`
}


وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

راه اندازی پایگاه داده

ما اتصال پایگاه داده را با استفاده از gorm راه اندازی می کنیم. در پوشه داخلی/ذخیره سازی خود، یک فایل جدید به نام database.go ایجاد کنید.

interior/storage/database.go

package storage

import (
    "log"
    "os"
    "blog-api/internal/model"
    "gorm.io/driver/postgres"
    "gorm.io/gorm"
)

DB *gorm.DB

func InitDB()
 {
dsn := os.Getenv("DB_DSN")
db, err := gorm.open(postgres.Open(dsn), &gorm.Config{})

if err != nil {
log.Fatal("Failed to connect to database", err)

}

db.Automigrate(&model.User{}, &model.Post{})
DB = db
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

اکنون فایل main.go را به صورت زیر تنظیم کنید:

package main

import (
    "log"
    "net/http"

    "blog-api/internal/router"
    "blog-api/internal/storage"
    "github.com/joho/godotenv"
)

func main() {
err := godotenv.Load("config/.env)

if err != nil {
log.Fatal("Error loading .env file)

}

//initialize database 
storage.InitDB()

//setup router
r := router.setupRouter()
log.Fatal(http.ListenAndServe(":8080", r))

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

توجه: setupRouter یک تابع در router.go ما است که روتر برنامه ما را راه اندازی می کند، در نظر داشته باشید، ما روتر خود را در قسمت بعدی وبلاگ راه اندازی خواهیم کرد.

Eun برنامه

برنامه را با استفاده از دستور اجرا کنید

go run main.go
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا