Rumah pembangunan bahagian belakang Golang Gunakan rangka kerja Gin untuk melaksanakan fungsi visualisasi dan pelaporan data

Gunakan rangka kerja Gin untuk melaksanakan fungsi visualisasi dan pelaporan data

Jun 22, 2023 pm 08:49 PM
visualisasi data ginframework Fungsi laporan

Dalam pembangunan perisian moden, visualisasi data dan fungsi pelaporan semakin mendapat perhatian, kerana ia boleh membantu pengguna memahami dan menganalisis data dengan lebih baik, serta membantu perusahaan mengurus perniagaan mereka dan membuat keputusan dengan lebih baik. Dalam artikel ini, kami akan memperkenalkan cara menggunakan rangka kerja Gin untuk melaksanakan visualisasi data dan fungsi pelaporan untuk membantu pembaca mempelajari dan menggunakan teknologi ini dengan lebih baik.

Rangka kerja Gin ialah rangka kerja web yang ringan berdasarkan bahasa Go dan mempunyai ciri prestasi tinggi dan kesederhanaan penggunaan. Konsep reka bentuknya adalah untuk menyediakan satu set alat asas (penghalaan, perisian tengah, pemaparan) untuk memenuhi keperluan asas pembangunan web, dan boleh diperluas dan disesuaikan dengan mudah. Oleh itu, aplikasi web yang cekap, berskala dan mudah diselenggara boleh dibangunkan dengan cepat menggunakan rangka kerja Gin.

Fungsi visualisasi dan pelaporan data yang diperkenalkan dalam artikel ini adalah berdasarkan API RESTful yang disediakan oleh rangka kerja Gin dan rangka kerja bahagian hadapan yang disediakan oleh Vue.js. Vue.js ialah rangka kerja JavaScript popular yang menyokong pembangunan komponen dipacu data, menjadikannya lebih mudah untuk membangunkan aplikasi bahagian hadapan yang kompleks. Pada masa yang sama, Vue.js juga menyediakan banyak pemalam dan komponen untuk melaksanakan visualisasi data dan fungsi pelaporan, seperti pemalam seperti ECharts dan DataTables.

Pertama, kita perlu mencipta aplikasi web berdasarkan rangka kerja Gin dan mentakrifkan beberapa API RESTful untuk mengendalikan permintaan data. Dalam contoh ini, kami menganggap bahawa kami perlu memaparkan beberapa data jualan, termasuk jualan, volum pesanan, kategori produk, dsb. Kami boleh mentakrifkan API berikut:

  • DAPATKAN /api/sales: Mengembalikan senarai semua data jualan.
  • DAPATKAN /api/sales/:id: Mengembalikan butiran data jualan tertentu.
  • POST /api/sales: Buat data jualan baharu.
  • PUT /api/sales/:id: Kemas kini maklumat untuk data jualan tertentu.
  • DELETE /api/sales/:id: Padamkan data jualan tertentu.

Sangat mudah untuk menentukan API dalam rangka kerja Gin Anda hanya perlu menggunakan kaedah dan laluan HTTP yang sepadan, dan mengikat fungsi pemprosesan yang sepadan. Contohnya:

func main() {
    r := gin.Default()

    r.GET("/api/sales", getSales)
    r.GET("/api/sales/:id", getSale)
    r.POST("/api/sales", createSale)
    r.PUT("/api/sales/:id", updateSale)
    r.DELETE("/api/sales/:id", deleteSale)

    r.Run()
}

func getSales(c *gin.Context) {
    // TODO: 返回所有销售数据的列表。
}

func getSale(c *gin.Context) {
    id := c.Param("id")
    // TODO: 返回某个特定销售数据的详细信息。
}

func createSale(c *gin.Context) {
    // TODO: 创建一条新的销售数据。
}

func updateSale(c *gin.Context) {
    id := c.Param("id")
    // TODO: 更新某个特定销售数据的信息。
}

func deleteSale(c *gin.Context) {
    id := c.Param("id")
    // TODO: 删除某个特定销售数据。
}
Salin selepas log masuk

Seterusnya, kita perlu menggunakan Vue.js untuk mencipta aplikasi bahagian hadapan dan menggunakan pemalam seperti ECharts dan DataTables untuk melaksanakan fungsi visualisasi dan pelaporan data. Pertama, kita perlu menggunakan Vue.js untuk membuat halaman mudah, termasuk jadual dan beberapa carta, untuk memaparkan data jualan. Contohnya:

<template>
  <div>
    <div>
      <table id="sales-table"></table>
    </div>
    <div>
      <div id="sales-chart1"></div>
      <div id="sales-chart2"></div>
    </div>
  </div>
</template>

<script>
import $ from 'jquery'
import 'datatables.net-bs4'
import echarts from 'echarts'

export default {
  name: 'SalesPage',
  data () {
    return {
      sales: []
    }
  },
  mounted () {
    this.loadSales()
  },
  methods: {
    loadSales () {
      $.ajax({
        url: '/api/sales',
        type: 'GET',
        success: (data) => {
          this.sales = data
          this.renderTable()
          this.renderCharts()
        }
      })
    },
    renderTable () {
      $('#sales-table').DataTable({
        data: this.sales,
        columns: [
          { title: 'ID', data: 'id' },
          { title: 'Amount', data: 'amount' },
          { title: 'Quantity', data: 'quantity' },
          { title: 'Product', data: 'product' },
          { title: 'Category', data: 'category' }
        ]
      })
    },
    renderCharts () {
      const chart1 = echarts.init(document.getElementById('sales-chart1'))
      const chart2 = echarts.init(document.getElementById('sales-chart2'))

      // TODO: 渲染图表数据。
    }
  }
}
</script>
Salin selepas log masuk

Dalam halaman ini, kami menggunakan DataTables untuk memaparkan data jualan dalam jadual dan ECharts untuk memaparkan data jualan dalam bentuk carta. Kami memanggil GET /api/sales sekali dalam kaedah loadSales untuk memuatkan data jualan dan menghantar data jualan kepada kaedah renderTable dan renderCharts untuk menggunakan DataTables dan ECharts untuk memaparkan data. Dalam kaedah renderTables, kami menggunakan pemalam DataTable jQuery untuk memaparkan jadual, dan dalam kaedah renderCharts, kami menggunakan ECharts untuk memaparkan carta.

Seterusnya, kita perlu melaksanakan fungsi pemprosesan yang ditakrifkan dalam API RESTful untuk mengendalikan permintaan data. Dalam contoh ini, kita boleh menggunakan SQLite sebagai pangkalan data dan Gorm sebagai rangka kerja ORM untuk mengendalikan pangkalan data. Pada masa yang sama, kami juga perlu menggunakan beberapa pemalam untuk membantu kami dengan pemprosesan dan pengesahan data, seperti gommon/pengesahan dan pemalam lain. Contohnya:

import (
  "github.com/gin-gonic/gin"
  "github.com/jinzhu/gorm"
  _ "github.com/mattn/go-sqlite3"
  "github.com/wbsnail/articles/GinDataVisualization/internal/sales"
  "gopkg.in/go-playground/validator.v9"
)

type SaleInput struct {
  Amount   float64 `json:"amount" validate:"required"`
  Quantity int     `json:"quantity" validate:"required"`
  Product  string  `json:"product" validate:"required"`
  Category string  `json:"category" validate:"required"`
}

func main() {
  db, err := gorm.Open("sqlite3", "sales.db")
  if err != nil {
    panic("failed to connect database")
  }
  defer db.Close()

  db.AutoMigrate(&sales.Sale{})

  r := gin.Default()

  r.GET("/api/sales", getSales)
  r.GET("/api/sales/:id", getSale)
  r.POST("/api/sales", createSale)
  r.PUT("/api/sales/:id", updateSale)
  r.DELETE("/api/sales/:id", deleteSale)

  r.Run()
}

func getSales(c *gin.Context) {
  db := c.MustGet("db").(*gorm.DB)
  var sales []sales.Sale
  db.Find(&sales)
  c.JSON(http.StatusOK, sales)
}

func getSale(c *gin.Context) {
  db := c.MustGet("db").(*gorm.DB)
  var sale sales.Sale
  if err := db.Where("id = ?", c.Param("id")).First(&sale).Error; err != nil {
    c.AbortWithStatus(http.StatusNotFound)
  } else {
    c.JSON(http.StatusOK, sale)
  }
}

func createSale(c *gin.Context) {
  db := c.MustGet("db").(*gorm.DB)
  var input SaleInput
  if err := c.ShouldBindJSON(&input); err != nil {
    c.AbortWithStatus(http.StatusBadRequest)
  } else if err := validate.Struct(input); err != nil {
    c.AbortWithStatus(http.StatusBadRequest)
  } else {
    sale := sales.Sale{Amount: input.Amount, Quantity: input.Quantity, Product: input.Product, Category: input.Category}
    db.Create(&sale)
    c.JSON(http.StatusOK, sale)
  }
}

func updateSale(c *gin.Context) {
  db := c.MustGet("db").(*gorm.DB)
  var input SaleInput
  if err := c.ShouldBindJSON(&input); err != nil {
    c.AbortWithStatus(http.StatusBadRequest)
  } else if err := validate.Struct(input); err != nil {
    c.AbortWithStatus(http.StatusBadRequest)
  } else {
    var sale sales.Sale
    if err := db.Where("id = ?", c.Param("id")).First(&sale).Error; err != nil {
      c.AbortWithStatus(http.StatusNotFound)
    } else {
      sale.Amount = input.Amount
      sale.Quantity = input.Quantity
      sale.Product = input.Product
      sale.Category = input.Category
      db.Save(&sale)
      c.JSON(http.StatusOK, sale)
    }
  }
}

func deleteSale(c *gin.Context) {
  db := c.MustGet("db").(*gorm.DB)
  var sale sales.Sale
  if err := db.Where("id = ?", c.Param("id")).First(&sale).Error; err != nil {
    c.AbortWithStatus(http.StatusNotFound)
  } else {
    db.Delete(&sale)
    c.Status(http.StatusOK)
  }
}
Salin selepas log masuk

Dalam contoh ini, kami mentakrifkan struktur SaleInput untuk mewakili format input data jualan dan menggunakan validate untuk mengesahkan kesahihan data input. Dalam kaedah createSale dan updateSale, kami menukar data input kepada struktur Jualan dan menggunakan db.Create dan db.Save untuk membuat atau mengemas kini data jualan. Dalam kaedah getSales, getSale dan deleteSale, kami menggunakan db.Find, db.Where dan db.Delete untuk bertanya dan memadam data jualan. Dalam semua fungsi pemprosesan, kami menggunakan db := c.MustGet("db").(*gorm.DB) untuk mendapatkan objek sambungan pangkalan data Ini kerana kami telah mendaftarkannya semasa membuat aplikasi untuk mewujudkan sambungan pangkalan data dan simpan objek sambungan dalam c.Keys["db"], supaya kita boleh menggunakan objek sambungan dalam setiap fungsi pemprosesan permintaan.

Akhir sekali, kita perlu mengikat halaman web dan API RESTful melalui rangka kerja Gin, supaya pengguna boleh mengakses dan mengendalikan data dengan mengakses halaman web. Dalam contoh ini, kita boleh menggunakan perisian tengah render HTML (atau JSON render) yang disediakan oleh rangka kerja Gin untuk mengikat halaman web dan API RESTful. Contohnya:

func main() {
  db, err := gorm.Open("sqlite3", "sales.db")
  if err != nil {
    panic("failed to connect database")
  }
  defer db.Close()

  db.AutoMigrate(&sales.Sale{})

  r := gin.Default()

  r.Use(func(c *gin.Context) {
    c.Set("db", db)
    c.Next()
  })

  r.GET("/", func(c *gin.Context) {
    c.HTML(http.StatusOK, "index.html", nil)
  })

  r.GET("/api/sales", getSales)
  r.GET("/api/sales/:id", getSale)
  r.POST("/api/sales", createSale)
  r.PUT("/api/sales/:id", updateSale)
  r.DELETE("/api/sales/:id", deleteSale)

  r.Run()
}
Salin selepas log masuk

Dalam contoh ini, kami mendaftarkan perisian tengah untuk menyimpan objek sambungan pangkalan data ke dalam c.Keys["db"], dan kemudian mengikat GET/permintaan menggunakan perisian perisian tengah render HTML untuk memaparkan halaman index.html. Dengan cara ini, kita boleh mengakses halaman Web dengan mengakses http://localhost:8080.

Ringkasnya, menggunakan rangka kerja Gin untuk melaksanakan fungsi visualisasi dan pelaporan data ialah teknologi yang sangat praktikal dan berguna. Ia boleh membantu kami memahami dan menganalisis data perniagaan dengan lebih baik serta membantu kami membuat keputusan yang lebih baik dan meningkatkan pengurusan kecekapan perusahaan. Melalui kajian dan amalan artikel ini, kita boleh menguasai teknologi ini dengan lebih baik dan mengaplikasikannya pada pembangunan sebenar.

Atas ialah kandungan terperinci Gunakan rangka kerja Gin untuk melaksanakan fungsi visualisasi dan pelaporan data. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Cara melaksanakan carta statistik data besar-besaran di bawah rangka kerja Vue Cara melaksanakan carta statistik data besar-besaran di bawah rangka kerja Vue Aug 25, 2023 pm 04:20 PM

Cara melaksanakan carta statistik data besar-besaran di bawah rangka kerja Vue Pengenalan: Dalam beberapa tahun kebelakangan ini, analisis data dan visualisasi telah memainkan peranan yang semakin penting dalam semua lapisan masyarakat. Dalam pembangunan bahagian hadapan, carta ialah salah satu cara yang paling biasa dan intuitif untuk memaparkan data. Rangka kerja Vue ialah rangka kerja JavaScript yang progresif untuk membina antara muka pengguna Ia menyediakan banyak alat dan perpustakaan yang berkuasa yang boleh membantu kami membina carta dan memaparkan data yang besar. Artikel ini akan memperkenalkan cara melaksanakan carta statistik data besar-besaran di bawah rangka kerja Vue dan lampirkan

Beberapa petua untuk membangunkan aplikasi visualisasi data menggunakan Vue.js dan Python Beberapa petua untuk membangunkan aplikasi visualisasi data menggunakan Vue.js dan Python Jul 31, 2023 pm 07:53 PM

Beberapa petua untuk membangunkan aplikasi visualisasi data menggunakan Vue.js dan Python Pengenalan: Dengan kemunculan era data besar, visualisasi data telah menjadi penyelesaian penting. Dalam pembangunan aplikasi visualisasi data, gabungan Vue.js dan Python boleh memberikan fleksibiliti dan fungsi yang berkuasa. Artikel ini akan berkongsi beberapa petua untuk membangunkan aplikasi visualisasi data menggunakan Vue.js dan Python, dan melampirkan contoh kod yang sepadan. 1. Pengenalan kepada Vue.js Vue.js ialah JavaScript yang ringan

Cara menggunakan Layui untuk melaksanakan fungsi papan pemuka visualisasi data drag-and-drop Cara menggunakan Layui untuk melaksanakan fungsi papan pemuka visualisasi data drag-and-drop Oct 26, 2023 am 11:27 AM

Cara menggunakan Layui untuk melaksanakan fungsi papan pemuka visualisasi data drag-and-drop Pengenalan: Visualisasi data semakin digunakan dalam kehidupan moden, dan pembangunan papan pemuka adalah bahagian penting daripadanya. Artikel ini terutamanya memperkenalkan cara menggunakan rangka kerja Layui untuk melaksanakan fungsi papan pemuka visualisasi data seret dan lepas, membolehkan pengguna menyesuaikan modul paparan data mereka sendiri secara fleksibel. 1. Persediaan untuk memuat turun rangka kerja Layui Pertama, kita perlu memuat turun dan mengkonfigurasi rangka kerja Layui. Anda boleh memuat turunnya di laman web rasmi Layui (https://www

Bagaimana untuk menggunakan C++ untuk visualisasi data yang cekap? Bagaimana untuk menggunakan C++ untuk visualisasi data yang cekap? Aug 25, 2023 pm 08:57 PM

Bagaimana untuk menggunakan C++ untuk visualisasi data yang cekap? Visualisasi data adalah untuk memaparkan data abstrak melalui cara visual seperti carta dan graf, menjadikannya lebih mudah untuk orang ramai memahami dan menganalisis data. Dalam era data besar, visualisasi data telah menjadi kemahiran penting untuk pekerja dalam pelbagai industri. Walaupun banyak alat visualisasi data yang biasa digunakan terutamanya dibangunkan berdasarkan bahasa skrip seperti Python dan R, C++, sebagai bahasa pengaturcaraan yang berkuasa, mempunyai kecekapan operasi yang tinggi dan pengurusan memori yang fleksibel, yang juga memainkan peranan penting dalam visualisasi data. Artikel ini akan

Tutorial Graphviz: Cipta Visualisasi Data Intuitif Tutorial Graphviz: Cipta Visualisasi Data Intuitif Apr 07, 2024 pm 10:00 PM

Graphviz ialah kit alat sumber terbuka yang boleh digunakan untuk melukis carta dan graf Ia menggunakan bahasa DOT untuk menentukan struktur carta. Selepas memasang Graphviz, anda boleh menggunakan bahasa DOT untuk mencipta carta, seperti melukis graf pengetahuan. Selepas anda menjana graf anda, anda boleh menggunakan ciri hebat Graphviz untuk menggambarkan data anda dan meningkatkan kefahamannya.

ECharts histogram (mendatar): cara memaparkan kedudukan data ECharts histogram (mendatar): cara memaparkan kedudukan data Dec 17, 2023 pm 01:54 PM

Histogram ECharts (mendatar): Cara memaparkan kedudukan data memerlukan contoh kod khusus Dalam visualisasi data, histogram ialah jenis carta yang biasa digunakan, yang boleh memaparkan saiz dan hubungan relatif data secara visual. ECharts ialah alat visualisasi data yang sangat baik yang menyediakan pembangun dengan jenis carta yang kaya dan pilihan konfigurasi yang berkuasa. Artikel ini akan memperkenalkan cara menggunakan histogram (mendatar) dalam ECharts untuk memaparkan kedudukan data dan memberikan contoh kod khusus. Pertama, kita perlu menyediakan data yang mengandungi data kedudukan

Mula Pantas: Gunakan fungsi bahasa Go untuk melaksanakan fungsi visualisasi data mudah Mula Pantas: Gunakan fungsi bahasa Go untuk melaksanakan fungsi visualisasi data mudah Aug 02, 2023 pm 04:25 PM

Permulaan Pantas: Gunakan fungsi bahasa Go untuk melaksanakan fungsi visualisasi data yang mudah Dengan pertumbuhan pesat dan kerumitan data, visualisasi data telah menjadi cara penting dalam analisis data dan ekspresi data. Dalam visualisasi data, kita perlu menggunakan alat dan teknik yang sesuai untuk mengubah data menjadi carta atau graf yang boleh dibaca dan difahami. Sebagai bahasa pengaturcaraan yang cekap dan mudah digunakan, bahasa Go juga digunakan secara meluas dalam bidang sains data. Artikel ini akan memperkenalkan cara menggunakan fungsi bahasa Go untuk melaksanakan fungsi visualisasi data mudah. Kami akan menggunakan Go

Projek web untuk visualisasi data menggunakan Node.js Projek web untuk visualisasi data menggunakan Node.js Nov 08, 2023 pm 03:32 PM

Projek web yang menggunakan Node.js untuk melaksanakan visualisasi data memerlukan contoh kod khusus Dengan kemunculan era data besar, visualisasi data telah menjadi cara yang sangat penting untuk memaparkan data. Dengan menukar data kepada carta, graf, peta dan bentuk lain, ia boleh memaparkan secara visual arah aliran, korelasi dan pengedaran data, membantu orang ramai memahami dan menganalisis data dengan lebih baik. Sebagai persekitaran JavaScript sisi pelayan yang cekap dan fleksibel, Node.js boleh melaksanakan projek web visualisasi data dengan baik. Dalam artikel ini,

See all articles