Heim > Backend-Entwicklung > Golang > Wie kann ich Fehler in meiner Gin-Webanwendung mithilfe eines Middleware-Ansatzes effektiv behandeln?

Wie kann ich Fehler in meiner Gin-Webanwendung mithilfe eines Middleware-Ansatzes effektiv behandeln?

DDD
Freigeben: 2024-11-01 11:42:29
Original
450 Leute haben es durchsucht

How can I effectively handle errors within my Gin web application using a middleware approach?

Verbesserung der Fehlerbehandlung in Gin

Die benutzerdefinierte Fehlerbehandlung mit Gin umfasst die Verwendung einer Middleware zur Verarbeitung von Fehlerantworten. Dadurch kann die Fehlerlogik von der normalen Ablauflogik getrennt werden.

Fehlerbehandlungs-Middleware

<code class="go">type appError struct {
    Code    int
    Message string
}

func JSONAppErrorReporter() gin.HandlerFunc {
    return func(c *gin.Context) {
        c.Next()
        errors := c.Errors.ByType(gin.ErrorTypeAny)

        if len(errors) > 0 {
            err := errors[0].Err
            var parsedError *appError
            switch err.(type) {
            case *appError:
                parsedError = err.(*appError)
            default:
                parsedError = &appError{
                    Code:    http.StatusInternalServerError,
                    Message: "Internal Server Error",
                }
            }
            // Respond with JSON serialized error
            c.IndentedJSON(parsedError.Code, parsedError)
            c.Abort()
        }
    }
}</code>
Nach dem Login kopieren

Verwendung in Handlerfunktionen

<code class="go">func fetchSingleHostGroup(c *gin.Context) {
    hostgroupID := c.Param("id")

    hostGroupRes, err := getHostGroupResource(hostgroupID)

    if err != nil {
        // Attach error to the context
        c.Error(err)
        return
    }

    // Respond with valid data
    c.JSON(http.StatusOK, *hostGroupRes)
}</code>
Nach dem Login kopieren

Server-Setup

<code class="go">func main() {
    router := gin.Default()
    router.Use(JSONAppErrorReporter())
    router.GET("/hostgroups/:id", fetchSingleHostGroup)
    router.Run(":3000")
}</code>
Nach dem Login kopieren

Zusätzliche Ressourcen

Weitere Einblicke in die Fehlerbehandlung in Gin finden Sie im Folgende Ressourcen:

  • [Gin-Gonic-Problem Nr. 327](https://github.com/gin-gonic/gin/issues/327)
  • [Gin-Gonic-Problem #651](https://github.com/gin-gonic/gin/issues/651)
  • [chirp](https://github.com/go-chi/chi/tree/master/ Middleware)
  • [gin-merry](https://github.com/gin-contrib/gin-merry)
  • [gin-frsh-showerrors](https://github. com/frsh/gin-showerrors)

Das obige ist der detaillierte Inhalt vonWie kann ich Fehler in meiner Gin-Webanwendung mithilfe eines Middleware-Ansatzes effektiv behandeln?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage