, um iris zu installieren
<span style="font-size: 14px;">go get github.com/kataras/iris<br></span>
Instanz
Registrieren Sie eine Route zur Service-API
<span style="font-size: 14px;">app := iris.New()<br><br>app.Handle("GET", "/ping", func(ctx iris.Context) {<br> ctx.JSON(iris.Map{"message": "pong"})<br>})<br><br>app.Run(iris.Addr(":8080"))<br></span>
Dies kann mit ein paar Codezeilen erreicht werden. Greifen Sie über den Browser auf http zu: //localhost:8080/ping gibt {"message": "pong"} zurück
Verwenden Sie die Handle-Funktion, um Methoden, Pfade und entsprechende Verarbeitungsfunktionen zu registrieren
Middleware hinzufügen
Wenn wir die Protokollinformationen aller Anfragen aufzeichnen möchten und hoffen, beim Aufrufen der entsprechenden Route bestätigen zu können, ob die angeforderte UA zulässig ist, können Sie die entsprechende Middleware über die Funktion „Verwenden“ hinzufügen Postbote muss auf den User-Agent zugreifen und ihn im Header hinzufügen. Der Zugriff auf /ping kann normale Ergebnisse zurückgeben. Wenn der User-Agent entfernt wird, wird die von uns festgelegte Meldung „Keine Autorisierung für Ping“ zurückgegeben. Da wir die Protokoll-Middleware von Iris hinzugefügt haben, werden die entsprechenden Protokollinformationen während des Zugriffs auf dem Terminal angezeigt. Holen Sie sich die Anforderungsparameter und zeigen Sie sie in HTML an
<span style="font-size: 14px;">package main<br/><br/>import (<br/> "github.com/kataras/iris"<br/> "github.com/kataras/iris/middleware/logger"<br/>)<br/><br/>func main() {<br/> app := iris.New()<br/><br/> app.Use(logger.New())<br/> app.Use(checkAgentMiddleware)<br/><br/> app.Handle("GET", "/ping", func(ctx iris.Context) {<br/> ctx.JSON(iris.Map{"message": "pong"})<br/> })<br/><br/> app.Run(iris.Addr(":8080"))<br/>}<br/><br/>func checkAgentMiddleware(ctx iris.Context) {<br/> ctx.Application().Logger().Infof("Runs before %s", ctx.Path())<br/> user_agent := ctx.GetHeader("User-Agent")<br/><br/> if user_agent != "pingAuthorized" {<br/> ctx.JSON("No authorized for ping")<br/> return<br/> }<br/> ctx.Next()<br/>}<br/></span>
Rufen Sie die Parameter in der Anfrage ab
<span style="font-size: 14px;"><html><br/> <head>Book information</head><br/> <body><br/> <h2>{{ .bookName }}</h2><br/> <h1>{{ .bookID }}</h1><br/> <h1>{{ .author }}</h1><br/> <h1>{{ .chapterCount }}</h1><br/> </body><br/></html><br/></span>
Legen Sie den Wert der Variablen in HTML fest
<span style="font-size: 14px;">package main<br/><br/>import "github.com/kataras/iris"<br/><br/>func main() {<br/> app := iris.New()<br/><br/> app.RegisterView(iris.HTML("./views", ".html"))<br/><br/> app.Handle("GET", "/bookinfo/{bookid:string}", func(ctx iris.Context) {<br/> bookID := ctx.Params().GetString("bookid")<br/><br/> ctx.ViewData("bookName", "Master iris")<br/> ctx.ViewData("bookID", bookID)<br/> ctx.ViewData("author", "Iris expert")<br/> ctx.ViewData("chapterCount", "40")<br/><br/> ctx.View("bookinfo.html")<br/> })<br/><br/> app.Run(iris.Addr(":8080"))<br/>}<br/></span>
Route erlaubt und verbietet externen Zugriff
Bei der tatsächlichen Verwendung können einige Routen manchmal nur intern verwendet werden und von außen nicht zugänglich.Kann mithilfe von ctx.Params().GetString("bookid")
In tatsächlichen Anwendungen werden Routen nach tatsächlichen Funktionen wie Benutzern, Büchern, Community usw. klassifiziert.
ctx.ViewData(key, value)
Für diese Art von Routen können Sie sie in die Benutzergruppe und die Büchergruppe unterteilen. Für diese Gruppe wird es einen gemeinsamen Handler geben, der einige allgemeine Verarbeitungen abwickelt.
<span style="font-size: 14px;">package main<br/><br/>import "github.com/kataras/iris"<br/><br/>import "strings"<br/><br/>func main() {<br/> app := iris.New()<br/><br/> magicAPI := app.Handle("NONE", "/magicapi", func(ctx iris.Context) {<br/> if ctx.GetCurrentRoute().IsOnline() {<br/> ctx.Writef("I'm back!")<br/> } else {<br/> ctx.Writef("I'll be back")<br/> }<br/> })<br/><br/> app.Handle("GET", "/onoffhandler/{method:string}/{state:string}", func(ctx iris.Context) {<br/> changeMethod := ctx.Params().GetString("method")<br/> state := ctx.Params().GetString("state")<br/><br/> if changeMethod == "" || state == "" {<br/> return<br/> }<br/><br/> if strings.Index(magicAPI.Path, changeMethod) == 1 {<br/> settingState := strings.ToLower(state)<br/> if settingState == "on" || settingState == "off" {<br/> if strings.ToLower(state) == "on" && !magicAPI.IsOnline() {<br/> magicAPI.Method = iris.MethodGet<br/> } else if strings.ToLower(state) == "off" && magicAPI.IsOnline() {<br/> magicAPI.Method = iris.MethodNone<br/> }<br/><br/> app.RefreshRouter()<br/><br/> ctx.Writef("\n Changed magicapi to %s\n", state)<br/> } else {<br/> ctx.Writef("\n Setting state incorrect(\"on\" or \"off\") \n")<br/> }<br/><br/> }<br/> })<br/><br/> app.Handle("GET", "/execmagicapi", func(ctx iris.Context) {<br/> ctx.Values().Set("from", "/execmagicapi")<br/><br/> if !magicAPI.IsOnline() {<br/> ctx.Exec("NONE", "/magicapi")<br/> } else {<br/> ctx.Exec("GET", "/magicapi")<br/> }<br/> })<br/><br/> app.Run(iris.Addr(":8080"))<br/>}<br/></span>Basicauth wurde im obigen Beispiel verwendet. Alle Routen, die auf die Büchergruppe zugreifen, werden zunächst einer Authentifizierung unterzogen. Die Authentifizierungsmethode ist Benutzername und Passwort.
Besuchen Sie http://localhost:8080/books/sfsg3234/bookinfo in Postman.
Stellen Sie die Autorisierung auf Basic Auth, Benutzername und Passwort auf die Werte im Programm ein, und der Zugriff wird korrekt beantwortet. Andernfalls nicht autorisiert
Weitere technische Artikel zum Thema Golang finden Sie in der Tutorial-Kolumne zu
Golang
!