Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Mengendalikan Data JSON dan Imej dalam Permintaan Berbilang Bahagian/Data Borang dengan Gin dalam Go?

Bagaimana untuk Mengendalikan Data JSON dan Imej dalam Permintaan Berbilang Bahagian/Data Borang dengan Gin dalam Go?

Patricia Arquette
Lepaskan: 2024-11-21 01:56:15
asal
978 orang telah melayarinya

How to Handle JSON and Image Data in Multipart/Form-Data Requests with Gin in Go?

Menerima JSON dan data imej dengan Gin dalam Go

Ringkas

Dalam artikel ini, kami akan mengkaji cara mereka bentuk pengendali permintaan HTTP dalam Gunakan rangka kerja Gin untuk menerima kedua-dua data JSON dan fail imej yang dihantar sebagai sebahagian daripada permintaan data berbilang bahagian/borang.

Menyediakan pengendali permintaan

Kami mulakan dengan mentakrifkan pengendali permintaan , UpdateProfile(), dengan struct yang mentakrifkan format badan permintaan yang dijangkakan:

type request struct {
    Username    string `json:"username" binding:"required,min=4,max=20"`
    Description string `json:"description" binding:"required,max=100"`
}

func (h *Handlers) UpdateProfile() gin.HandlerFunc {
    return func(c *gin.Context) {
        // ...
    }
}
Salin selepas log masuk

Menghuraikan JSON dengan c.BindJSON()

Untuk mengekstrak data JSON daripada badan permintaan, kami menggunakan c.BindJSON(), memberikan penunjuk kepada struct permintaan:

var updateRequest request

if err := c.BindJSON(&updateRequest); err != nil {
    // Handle JSON binding errors
    ...
}
Salin selepas log masuk

Menghuraikan imej dengan c.FormFile()

Untuk menghuraikan fail imej, kami menggunakan c.FormFile() :

avatar, err := c.FormFile("avatar")
if err != nil {
    // Handle file parsing errors
    ...
}
Salin selepas log masuk

Ralat: "aksara tidak sah '-' dalam literal angka"

Jika kita menghadapi ralat seperti "aksara tidak sah '-' dalam literal angka," ia mungkin disebabkan oleh cuba menghuraikan JSON manakala badan permintaan juga mengandungi sempadan untuk data berbilang bahagian/bentuk. Kami boleh menentukan mod pengikatan.FormMultipart secara eksplisit:

// c.ShouldBind will choose binding.FormMultipart based on the Content-Type header.
// We call c.ShouldBindWith to make it explicitly.
if err := c.ShouldBindWith(&updateRequest, binding.FormMultipart); err != nil {
    // Handle binding errors
    ...
}
Salin selepas log masuk

Menghuraikan XML atau YAML daripada multipart/form-data

Jika XML atau YAML dijangka bersama JSON dalam multipart/form- permintaan data, kami boleh menghuraikannya secara manual, contohnya:

var event struct {
    At     time.Time `xml:"time" binding:"required"`
    Player string    `xml:"player" binding:"required"`
    Action string    `xml:"action" binding:"required"`
}

if err := binding.XML.BindBody([]byte(updateRequest.Event), &event); err != nil {
    // Handle binding errors
    ...
}
Salin selepas log masuk

Kesimpulan

Dengan mengikuti teknik yang dibincangkan, anda boleh menghuraikan kedua-dua data JSON dan imej yang dimuat naik dengan berkesan dalam satu berbilang bahagian/bentuk -permintaan data dalam Go menggunakan Gin. Ingatlah untuk mengendalikan sebarang kemungkinan ralat pengikatan dengan sewajarnya.

Atas ialah kandungan terperinci Bagaimana untuk Mengendalikan Data JSON dan Imej dalam Permintaan Berbilang Bahagian/Data Borang dengan Gin dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan