Apakah fungsi teras perniagaan yang boleh dicapai oleh pembangunan perkhidmatan mikro Golang?
Dengan perkembangan pesat pengkomputeran awan dan teknologi kontena, seni bina perkhidmatan mikro telah menjadi salah satu aliran arus perdana dalam pembangunan aplikasi moden. Sebagai bahasa pengaturcaraan yang cekap, boleh dipercayai dan serentak, Golang telah menjadi pilihan ideal untuk membina perkhidmatan mikro.
Dalam pembangunan perkhidmatan mikro Golang, kami boleh mencapai fungsi perniagaan teras berikut:
package main import ( "fmt" "log" "net/http" ) func main() { http.HandleFunc("/hello", helloHandler) log.Fatal(http.ListenAndServe(":8080", nil)) } func helloHandler(w http.ResponseWriter, r *http.Request) { fmt.Fprintln(w, "Hello, World!") }
package main import ( "database/sql" "fmt" "log" _ "github.com/go-sql-driver/mysql" ) func main() { db, err := sql.Open("mysql", "user:password@tcp(localhost:3306)/database") if err != nil { log.Fatal(err) } defer db.Close() rows, err := db.Query("SELECT * FROM users") if err != nil { log.Fatal(err) } defer rows.Close() for rows.Next() { var id int var name string err = rows.Scan(&id, &name) if err != nil { log.Fatal(err) } fmt.Println(id, name) } }
package main import ( "log" "github.com/streadway/amqp" ) func main() { conn, err := amqp.Dial("amqp://guest:guest@localhost:5672/") if err != nil { log.Fatal(err) } defer conn.Close() ch, err := conn.Channel() if err != nil { log.Fatal(err) } defer ch.Close() q, err := ch.QueueDeclare( "hello", false, false, false, false, nil, ) if err != nil { log.Fatal(err) } err = ch.Publish( "", q.Name, false, false, amqp.Publishing{ ContentType: "text/plain", Body: []byte("Hello, RabbitMQ!"), }, ) if err != nil { log.Fatal(err) } }
package main import ( "fmt" "log" "net/http" "github.com/dgrijalva/jwt-go" ) var jwtKey = []byte("secret_key") type Claims struct { Username string `json:"username"` jwt.StandardClaims } func main() { http.HandleFunc("/login", loginHandler) http.HandleFunc("/protected", authMiddleware(protectedHandler)) log.Fatal(http.ListenAndServe(":8080", nil)) } func loginHandler(w http.ResponseWriter, r *http.Request) { username := r.FormValue("username") password := r.FormValue("password") if username == "admin" && password == "admin" { token := jwt.NewWithClaims(jwt.SigningMethodHS256, Claims{ Username: username, }) tokenString, err := token.SignedString(jwtKey) if err != nil { log.Fatal(err) } fmt.Fprintln(w, tokenString) } else { w.WriteHeader(http.StatusUnauthorized) fmt.Fprintln(w, "Username or password incorrect") } } func protectedHandler(w http.ResponseWriter, r *http.Request) { fmt.Fprintln(w, "Protected resource") } func authMiddleware(next http.HandlerFunc) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { tokenString := r.Header.Get("Authorization") token, err := jwt.ParseWithClaims(tokenString, &Claims{}, func(token *jwt.Token) (interface{}, error) { return jwtKey, nil }) if claims, ok := token.Claims.(*Claims); ok && token.Valid { fmt.Println(claims.Username) next(w, r) } else { w.WriteHeader(http.StatusUnauthorized) fmt.Fprintln(w, "Unauthorized") } } }
Dengan menggunakan Golang untuk membangunkan perkhidmatan mikro, kami boleh melaksanakan fungsi perniagaan teras seperti pembangunan antara muka API RESTful, penyepaduan pangkalan data, baris gilir mesej dan pemprosesan tugas tak segerak, pengesahan dan kebenaran . Ciri kesederhanaan, kecekapan dan keselarasan Golang menjadikan pembinaan perkhidmatan mikro yang boleh dipercayai lebih mudah dan lebih cekap.
Atas ialah kandungan terperinci Apakah fungsi teras perniagaan yang boleh dicapai oleh pembangunan perkhidmatan mikro Golang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!