"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo analizar archivos y datos JSON de una solicitud HTTP en Golang?

¿Cómo analizar archivos y datos JSON de una solicitud HTTP en Golang?

Publicado el 2024-11-13
Navegar:593

How to Parse Files and JSON Data from an HTTP Request in Golang?

Análisis de archivos y datos JSON de una solicitud HTTP en Go

En una aplicación web, es común recibir tanto archivos como datos JSON en una solicitud HTTP. Para procesar con éxito estos elementos, es esencial comprender cómo analizarlos de manera efectiva.

El problema

Considere un escenario en el que tiene una interfaz AngularJS que envía una solicitud a un backend de Go. La solicitud contiene un archivo ("file") y datos JSON ("doc"). Su objetivo es analizar tanto el archivo PDF como los datos JSON de esta solicitud.

La solución

Para resolver este problema, debe procesar por separado tanto el archivo como los datos JSON. Al utilizar http.(*Request).MultipartReader() e iterar sobre las partes usando NextPart(), puede extraer y analizar cada elemento.

Paso 1: crear un lector multiparte

mr, err := r.MultipartReader()
if err != nil {
    http.Error(w, err.Error(), http.StatusInternalServerError)
    return
}

Paso 2: Procesar cada parte

Para cada parte de la solicitud de varias partes:

part, err := mr.NextPart()
if err == io.EOF {
    break
}
if err != nil {
    http.Error(w, err.Error(), http.StatusInternalServerError)
    return
}

Paso 3: Extraer datos del archivo

Si la parte es un archivo (part.FormName() == "file"):

outfile, err := os.Create("./docs/"   part.FileName())
if err != nil {
    http.Error(w, err.Error(), http.StatusInternalServerError)
    return
}
defer outfile.Close()

_, err = io.Copy(outfile, part)
if err != nil {
    http.Error(w, err.Error(), http.StatusInternalServerError)
    return
}

Paso 4: Analizar datos JSON

Si la pieza contiene datos JSON (part.FormName() == "doc"):

jsonDecoder := json.NewDecoder(part)
err = jsonDecoder.Decode(&doc)
if err != nil {
    http.Error(w, err.Error(), http.StatusInternalServerError)
    return
}

Paso 5: Postprocesamiento

Después de analizar tanto el archivo como los datos JSON, puede realizar cualquier posprocesamiento necesario, como guardarlo en una base de datos o enviar una respuesta al cliente. .

Declaración de liberación Este artículo se reimprime en: 1729747542 Si hay alguna infracción, comuníquese con [email protected] para eliminarla.
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3