Heim Backend-Entwicklung Golang So verwenden Sie die Go-Sprache, um die Überprüfung der Anforderungsparameter für das Routing zu implementieren

So verwenden Sie die Go-Sprache, um die Überprüfung der Anforderungsparameter für das Routing zu implementieren

Dec 17, 2023 pm 02:40 PM
go语言 路由 Parametervalidierung

So verwenden Sie die Go-Sprache, um die Überprüfung der Anforderungsparameter für das Routing zu implementieren

So verwenden Sie die Go-Sprache, um die Überprüfung der Routing-Anforderungsparameter zu implementieren

In der tatsächlichen Entwicklung müssen wir häufig die empfangenen Anforderungsparameter überprüfen, um die Gültigkeit und Sicherheit der Daten sicherzustellen. Beim Schreiben serverseitiger Programme in der Go-Sprache ist es üblich, Anfragen über Routing zu bearbeiten. In diesem Artikel wird erläutert, wie Sie mithilfe der Go-Sprache die Überprüfung von Routing-Anforderungsparametern implementieren und spezifische Codebeispiele anhängen.

1. Verwenden Sie das Gin-Framework

Gin ist ein leichtes Web-Framework, mit dem Routing-Funktionen schnell erstellt und implementiert werden können. In diesem Artikel verwenden wir das Gin-Framework, um zu demonstrieren, wie die Validierung von Anforderungsparametern implementiert wird.

  1. Installieren Sie das Gin-Framework

Zuerst müssen wir das Gin-Framework installieren. Sie können den folgenden Befehl verwenden, um das Gin-Framework zu installieren:

go get -u github.com/gin-gonic/gin
Nach dem Login kopieren
  1. Routen erstellen und konfigurieren

In der Go-Sprache können Sie den Router des Gin-Frameworks verwenden, um Routen zu definieren. Zuerst müssen wir eine Instanz von Gin erstellen und die Route binden:

package main

import (
    "github.com/gin-gonic/gin"
)

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

    // 添加路由
    r.GET("/user/:id", getUser)

    r.Run(":8080")
}

func getUser(c *gin.Context) {
    // 获取请求参数
    id := c.Param("id")

    // 验证请求参数
    // ...

    // 其他业务逻辑
    // ...
}
Nach dem Login kopieren

Im obigen Code erstellen wir eine Route, rufen den Parameter mit dem Namen „user“ über die GET-Anfrage ab und übergeben ihn an die getUser-Funktion.

  1. Anforderungsparameter überprüfen

Als nächstes müssen wir die erhaltenen Anforderungsparameter in der getUser-Funktion überprüfen. Je nach tatsächlichem Bedarf können Sie die folgenden Methoden zur Überprüfung verwenden:

(1) Verwenden Sie die vom Gin-Framework bereitgestellten Bindungs- und Überprüfungsfunktionen:

func getUser(c *gin.Context) {
    var user User

    // 绑定并验证请求参数
    if err := c.ShouldBindUri(&user); err != nil {
        c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
        return
    }

    // 其他业务逻辑
    // ...
}
Nach dem Login kopieren

Im obigen Code definieren wir eine Benutzerstruktur und verwenden dazu die ShouldBindUri-Methode Binden Sie die Anforderungsparameter in die Struktur ein und überprüfen Sie, ob die Parameter den definierten Regeln entsprechen. Wenn die Parameterüberprüfung fehlschlägt, wird eine Fehlermeldung zurückgegeben. Sie können die Feldtypen, Einschränkungen usw. der Struktur entsprechend den spezifischen Umständen definieren.

(2) Verwenden Sie reguläre Ausdrücke zur Überprüfung:

func getUser(c *gin.Context) {
    // 获取请求参数
    id := c.Param("id")

    // 使用正则表达式验证参数
    pattern := `^d+$`
    match, _ := regexp.MatchString(pattern, id)
    if !match {
        c.JSON(http.StatusBadRequest, gin.H{"error": "Invalid parameter"})
        return
    }

    // 其他业务逻辑
    // ...
}
Nach dem Login kopieren

Im obigen Code verwenden wir reguläre Ausdrücke, um die Anforderungsparameter zu überprüfen. Wenn die Parameter nicht den definierten Regeln entsprechen, wird eine Fehlermeldung zurückgegeben.

2. Praktisches Anwendungsbeispiel

Im Folgenden zeigen wir anhand eines Beispiels, wie die Go-Sprache zur Implementierung der Routing-Anforderungsparameterüberprüfung verwendet wird.

  1. Erstellen Sie eine Datei mit dem Namen „main.go“ und kopieren Sie den folgenden Code in die Datei:
package main

import (
    "github.com/gin-gonic/gin"
    "net/http"
    "regexp"
)

type User struct {
    ID   string `uri:"id" binding:"required"`
    Name string `uri:"name" binding:"required"`
}

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

    r.GET("/user/:id/:name", getUser)

    r.Run(":8080")
}

func getUser(c *gin.Context) {
    var user User

    if err := c.ShouldBindUri(&user); err != nil {
        c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
        return
    }

    pattern := `^[a-zA-Z]+$`
    match, _ := regexp.MatchString(pattern, user.Name)
    if !match {
        c.JSON(http.StatusBadRequest, gin.H{"error": "Invalid name parameter"})
        return
    }

    c.JSON(http.StatusOK, gin.H{"message": "Success"})
}
Nach dem Login kopieren
  1. Führen Sie den folgenden Befehl im Terminal aus, um den Dienst zu starten:
go run main.go
Nach dem Login kopieren
  1. Verwenden Sie einen Browser oder ein anderes Tool. Senden eine GET-Anfrage, um zu überprüfen, ob die Schnittstelle normal läuft:
http://localhost:8080/user/123/John
Nach dem Login kopieren

Gemäß dem Beispielcode wird der Anforderungsparameter „123“ als illegaler ID-Parameter und „John“ als zulässiger Namensparameter überprüft.

Zusammenfassung

Durch die Verwendung des Gin-Frameworks der Go-Sprache können wir die Überprüfung der Anforderungsparameter für das Routing problemlos implementieren. Unabhängig davon, ob Sie die bereitgestellte Überprüfungsfunktion verwenden oder die Überprüfungsregeln anpassen, können Sie sie flexibel entsprechend den tatsächlichen Anforderungen anwenden. Dies kann die Leistung und Sicherheit des Serverprogramms erheblich verbessern.

Das obige ist der detaillierte Inhalt vonSo verwenden Sie die Go-Sprache, um die Überprüfung der Anforderungsparameter für das Routing zu implementieren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Welche Bibliotheken werden für die Operationen der schwimmenden Punktzahl in Go verwendet? Welche Bibliotheken werden für die Operationen der schwimmenden Punktzahl in Go verwendet? Apr 02, 2025 pm 02:06 PM

In der Bibliothek, die für den Betrieb der Schwimmpunktnummer in der GO-Sprache verwendet wird, wird die Genauigkeit sichergestellt, wie die Genauigkeit ...

Was ist das Problem mit Warteschlangen -Thread in Go's Crawler Colly? Was ist das Problem mit Warteschlangen -Thread in Go's Crawler Colly? Apr 02, 2025 pm 02:09 PM

Das Problem der Warteschlange Threading In Go Crawler Colly untersucht das Problem der Verwendung der Colly Crawler Library in Go -Sprache. Entwickler stoßen häufig auf Probleme mit Threads und Anfordern von Warteschlangen. � ...

Warum hat das Drucken von Saiten mit Println und String () -Funktionen unterschiedliche Effekte? Warum hat das Drucken von Saiten mit Println und String () -Funktionen unterschiedliche Effekte? Apr 02, 2025 pm 02:03 PM

Der Unterschied zwischen Stringdruck in GO -Sprache: Der Unterschied in der Wirkung der Verwendung von Println und String () ist in Go ...

Wie löste ich das Problem des Typs des user_id -Typs bei der Verwendung von Redis -Stream, um Nachrichtenwarteschlangen in GO -Sprache zu implementieren? Wie löste ich das Problem des Typs des user_id -Typs bei der Verwendung von Redis -Stream, um Nachrichtenwarteschlangen in GO -Sprache zu implementieren? Apr 02, 2025 pm 04:54 PM

Das Problem der Verwendung von RETISTREAM zur Implementierung von Nachrichtenwarteschlangen in der GO -Sprache besteht darin, die Go -Sprache und Redis zu verwenden ...

Was soll ich tun, wenn die benutzerdefinierten Strukturbezeichnungen in Goland nicht angezeigt werden? Was soll ich tun, wenn die benutzerdefinierten Strukturbezeichnungen in Goland nicht angezeigt werden? Apr 02, 2025 pm 05:09 PM

Was soll ich tun, wenn die benutzerdefinierten Strukturbezeichnungen in Goland nicht angezeigt werden? Bei der Verwendung von Goland für GO -Sprachentwicklung begegnen viele Entwickler benutzerdefinierte Struktur -Tags ...

Was ist der Unterschied zwischen 'var' und 'Typ' Typenwort Definition in der GO -Sprache? Was ist der Unterschied zwischen 'var' und 'Typ' Typenwort Definition in der GO -Sprache? Apr 02, 2025 pm 12:57 PM

Zwei Möglichkeiten, Strukturen in der GO -Sprache zu definieren: Der Unterschied zwischen VAR- und Typ -Schlüsselwörtern. Bei der Definition von Strukturen sieht die Sprache oft zwei verschiedene Schreibweisen: Erstens ...

Welche Bibliotheken in GO werden von großen Unternehmen entwickelt oder von bekannten Open-Source-Projekten bereitgestellt? Welche Bibliotheken in GO werden von großen Unternehmen entwickelt oder von bekannten Open-Source-Projekten bereitgestellt? Apr 02, 2025 pm 04:12 PM

Welche Bibliotheken in GO werden von großen Unternehmen oder bekannten Open-Source-Projekten entwickelt? Bei der Programmierung in Go begegnen Entwickler häufig auf einige häufige Bedürfnisse, ...

Warum gibt es bei Verwendung von SQL.Open keinen Fehler an, wenn DSN leer ist? Warum gibt es bei Verwendung von SQL.Open keinen Fehler an, wenn DSN leer ist? Apr 02, 2025 pm 12:54 PM

Warum meldet der DSN bei Verwendung von SQL.Open keinen Fehler? In Go Language, Sql.open ...

See all articles