Erstellen Sie eine CRUD-API mit Go

PHPz
Freigeben: 2024-07-29 13:53:53
Original
723 Leute haben es durchsucht

Create a CRUD API with Go

Die CRUD-Operationen (Erstellen, Lesen, Aktualisieren, Löschen) sind die Grundfunktionen jeder Webanwendung bei der Arbeit mit einer Datenbank. Dieses Beispiel zeigt Ihnen, wie Sie die CRUD-API mit Go erstellen und MySQL als Datenbank verwenden.

Voraussetzungen

  • Gehe 1.21
  • MySQL

Setup-Projekt

Einrichten der Go-Projektabhängigkeiten.

go mod init app go get github.com/gin-gonic/gin go get gorm.io/gorm go get gorm.io/driver/mysql go get github.com/joho/godotenv
Nach dem Login kopieren

Erstellen Sie eine Testdatenbank mit dem Namen „example“ und führen Sie die Datei „database.sql“ aus, um die Tabelle und die Daten zu importieren.

Projektstruktur

├─ .env ├─ main.go ├─ config │ └─ db.go ├─ controllers │ └─ product_controller.go ├─ models │ └─ product.go ├─ public │ └─ index.html └─ router └─ router.go
Nach dem Login kopieren

Projektdateien

.env

Diese Datei enthält die Datenbankverbindungsinformationen.

DB_HOST=localhost DB_PORT=3306 DB_DATABASE=example DB_USER=root DB_PASSWORD=
Nach dem Login kopieren

db.go

Diese Datei richtet die Datenbankverbindung mithilfe von GORM ein. Es deklariert eine globale Variable DB, um die Datenbankverbindungsinstanz zur späteren Verwendung in unserer Anwendung zu speichern.

package config import ( "fmt" "os" "github.com/joho/godotenv" "gorm.io/driver/mysql" "gorm.io/gorm" "gorm.io/gorm/schema" ) var DB *gorm.DB func SetupDatabase() { godotenv.Load() connection := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8mb4&parseTime=true", os.Getenv("DB_USER"), os.Getenv("DB_PASSWORD"), os.Getenv("DB_HOST"), os.Getenv("DB_PORT"), os.Getenv("DB_DATABASE")) db, _ := gorm.Open(mysql.Open(connection), &gorm.Config{NamingStrategy: schema.NamingStrategy{SingularTable: true}}) DB = db }
Nach dem Login kopieren

router.go

Diese Datei richtet das Routing für eine Gin-Webanwendung ein. Es initialisiert einen Router, stellt eine statische index.html-Datei an der Stamm-URL bereit und definiert API-Routen für CRUD-Vorgänge.

package router import ( "app/controllers" "github.com/gin-gonic/gin" ) func SetupRouter() { productController := controllers.ProductController{} router := gin.Default() router.StaticFile("/", "./public/index.html") router.Group("/api"). GET("/products", productController.Index). POST("/products", productController.Create). GET("/products/:id", productController.Get). PUT("/products/:id", productController.Update). DELETE("/products/:id", productController.Delete) router.Run() }
Nach dem Login kopieren

Produkt.go

Diese Datei definiert das Produktmodell für die Anwendung. Dieses Modell wird für Datenbankoperationen mit Produkten verwendet.

package models type Product struct { Id int `gorm:"primaryKey;autoIncrement"` Name string Price float64 }
Nach dem Login kopieren

product_controller.go

Diese Datei definiert alle Funktionen, die zur Bearbeitung eingehender Anfragen und zur Durchführung aller CRUD-Operationen erforderlich sind.

package controllers import ( "app/config" "app/models" "net/http" "strconv" "github.com/gin-gonic/gin" ) type ProductController struct { } func (con *ProductController) Index(c *gin.Context) { var products []models.Product config.DB.Find(&products) c.JSON(http.StatusOK, products) } func (con *ProductController) Get(c *gin.Context) { var product models.Product config.DB.First(&product, c.Params.ByName("id")) c.JSON(http.StatusOK, product) } func (con *ProductController) Create(c *gin.Context) { var product models.Product c.BindJSON(&product) if err := config.DB.Create(&product).Error; err != nil { c.AbortWithError(http.StatusBadRequest, err) return } c.JSON(http.StatusOK, product) } func (con *ProductController) Update(c *gin.Context) { var product models.Product c.BindJSON(&product) product.Id, _ = strconv.Atoi(c.Params.ByName("id")) if err := config.DB.Updates(&product).Error; err != nil { c.AbortWithError(http.StatusBadRequest, err) return } c.JSON(http.StatusOK, product) } func (con *ProductController) Delete(c *gin.Context) { var product models.Product if err := config.DB.Delete(&product, c.Params.ByName("id")).Error; err != nil { c.AbortWithError(http.StatusBadRequest, err) return } c.Status(http.StatusOK) }
Nach dem Login kopieren

c.BindJSON() analysiert die JSON-Nutzlast aus dem Anforderungstext in eine Go-Struktur.

config.DB die GORM-Instanz, die zum Ausführen der gewünschten Datenbankoperation verwendet wird.

c.JSON() sendet eine JSON-Antwort mit dem Ergebnis der Operation und dem entsprechenden HTTP-Statuscode.

main.go

Diese Datei ist der Haupteinstiegspunkt unserer Anwendung. Es wird die Gin-Webanwendung erstellen und einrichten.

package main import ( "app/config" "app/router" ) func main() { config.SetupDatabase() router.SetupRouter() }
Nach dem Login kopieren

index.html

Diese Datei wird verwendet, um eine grundlegende Benutzeroberfläche zum Testen unserer API zu erstellen.

   

Example CRUD

Nach dem Login kopieren
  • Viele andere Artikel verwenden Postman als HTTP-Client zum Testen der API, aber in diesem Artikel verwende ich stattdessen JavaScript. Dies wird Ihnen helfen, mehr Details zu verstehen, wenn Sie mit HTTP-Anfragen auf der Clientseite arbeiten.
  • Damit diese Datei sauber und lesbar bleibt, verwenden wir nur einfaches HTML und JavaScript. Es gibt hier keine zusätzlichen Bibliotheken wie das CSS Framework oder Axios.
  • Alle CRUD-Funktionen verwenden die entsprechende HTTP-Methode, um die API aufzurufen.
  • showResponse(res) formatiert das JSON-Objekt, um es leichter lesbar zu machen.

Projekt ausführen

go run main.go
Nach dem Login kopieren

Öffnen Sie den Webbrowser und gehen Sie zu http://localhost:8080

Testen

Holen Sie sich alle Produkte

Klicken Sie auf die Schaltfläche „Produkte abrufen“. Die API gibt alle Produktdaten zurück.

Create a CRUD API with Go

Produkt nach ID abrufen

Klicken Sie auf die Schaltfläche „Produkt abrufen“ und geben Sie „1“ als Produkt-ID ein. Die API gibt Produktdaten zurück.

Create a CRUD API with Go

Produkt erstellen

Klicken Sie auf die Schaltfläche „Produkt erstellen“ und geben Sie „test-create“ als Produktnamen und „100“ als Preis ein. Die API gibt ein neu erstelltes Produkt zurück.

Create a CRUD API with Go

Produkt aktualisieren

Klicken Sie auf die Schaltfläche „Produkt aktualisieren“ und geben Sie „101“ für die Produkt-ID und „test-update“ für den Namen und „200“ für den Preis ein. Die API gibt ein aktualisiertes Produkt zurück.

Create a CRUD API with Go

Produkt löschen

Klicken Sie auf die Schaltfläche „Produkt löschen“ und geben Sie „101“ als Produkt-ID ein. Die API gibt nichts zurück, was akzeptabel ist, da wir von unserer API nichts zurückgeben.

Create a CRUD API with Go

Abschluss

In diesem Artikel haben Sie gelernt, wie Sie das Gin-Framework erstellen und einrichten, um eine CRUD-API zu erstellen. Nutzen Sie GORM als ORM, um die CRUD-Operationen in der Datenbank auszuführen. Testen Sie unsere API mit JavaScript. Ich hoffe, dass Ihnen der Artikel gefällt.

Quellcode: https://github.com/StackPuz/Example-CRUD-Go

Erstellen Sie eine CRUD-Web-App: https://stackpuz.com

Das obige ist der detaillierte Inhalt vonErstellen Sie eine CRUD-API mit Go. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:dev.to
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!