Rumah pembangunan bahagian belakang Golang Amalkan bahasa: menggunakan gin untuk membina API Web yang cekap

Amalkan bahasa: menggunakan gin untuk membina API Web yang cekap

Jun 18, 2023 am 09:10 AM
pergi bahasa web api gin

Dengan pembangunan berterusan teknologi Internet, API Web telah menjadi blok binaan teras aplikasi moden. Kepantasan, kecekapan dan kebolehskalaan API Web adalah penting dalam dunia Internet hari ini. Untuk mencapai matlamat ini, bahasa Go, sebagai bahasa pengaturcaraan yang pantas, cekap dan serentak, telah menjadi pilihan pertama banyak pembangun web.

Dalam artikel ini, kami akan memperkenalkan cara menggunakan rangka kerja Gin untuk membina API Web yang cekap, dan juga menerangkan prinsip asas dan teknik pembangunan rangka kerja Gin. Kandungan utama artikel ini termasuk:

  1. Pengenalan kepada rangka kerja Gin

Rangka kerja Gin ialah rangka kerja Web berasaskan HTTP yang menggunakan reka bentuk yang ringan dan mempunyai prestasi cemerlang dan kebolehpercayaan. Berbanding dengan rangka kerja lain, penghalaan Gin dan pemprosesan perisian tengah adalah ciri terasnya.

  1. Pasang Gin dengan cepat

Anda boleh mendapatkan panduan pemasangan dan dokumentasi dengan mudah melalui halaman GitHub Gin. Atas alasan bahawa bahasa Go telah dipasang sebelum ini, kami boleh memasang Gin melalui arahan berikut:

1

$ go get github.com/gin-gonic/gin

Salin selepas log masuk
  1. Bina aplikasi Gin pertama

Kini kami telah memasangnya Gin, seterusnya kami akan membina perkhidmatan HTTP mudah sebagai aplikasi Gin pertama kami. Sila ikuti langkah berikut:

  • Buat fail bernama main.go
  • Import perpustakaan yang diperlukan

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

package main

 

import (

    "github.com/gin-gonic/gin"

)

 

func main() {

    // 初始化Gin

    r := gin.Default()

 

    // 定义一个处理路由

    r.GET("/", func(c *gin.Context) {

        c.JSON(200, gin.H{

            "message": "Hello Gin World!",

        })

    })

 

    // 启动HTTP服务

    r.Run(":8000")

}

Salin selepas log masuk

Dengan menjalankan arahan berikut Untuk memulakan HTTP perkhidmatan:

1

$ go run main.go

Salin selepas log masuk

Memandangkan kami telah berjaya memulakan perkhidmatan HTTP, jalankan http://localhost:8000/ dan anda akan melihat respons berikut:

1

2

3

{

    "message": "Hello Gin World!"

}

Salin selepas log masuk
  1. Tentukan laluan dan perisian tengah

Menggunakan rangka kerja Gin, kami boleh menentukan laluan dan perisian tengah dengan mudah untuk mengendalikan permintaan dan respons HTTP. Berikut ialah contoh aplikasi Gin dengan laluan dan perisian tengah yang berbeza:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

package main

 

import (

    "github.com/gin-gonic/gin"

)

 

func main() {

    // 初始化Gin

    r := gin.Default()

 

    // 定义一个中间件

    r.Use(func(c *gin.Context) {

        c.Set("version", "1.0")

        c.Next()

    })

 

    // 定义路由

    r.GET("/", func(c *gin.Context) {

        version := c.MustGet("version").(string)

        c.JSON(200, gin.H{

            "message": "Hello Gin World!",

            "version": version,

        })

    })

 

    r.GET("/ping", func(c *gin.Context) {

        c.JSON(200, gin.H{

            "message": "pong",

        })

    })

 

    // 启动HTTP服务

    r.Run(":8000")

}

Salin selepas log masuk
  • Dalam contoh ini, kami mentakrifkan perisian tengah yang menetapkan maklumat versi sebelum setiap permintaan diproses.
  • Kami juga mentakrifkan dua laluan: /ping dan /. Laluan /ping akan bertindak balas dengan rentetan JSON yang mewakili tindak balas pong mudah. /route akan bertindak balas dengan rentetan JSON lain yang mengandungi mesej dan maklumat versi untuk "Hello Gin World!"
  1. Mengendalikan permintaan dan respons HTTP

Melalui rangka kerja Gin, kami boleh mengendalikan pelbagai permintaan dan respons HTTP dengan mudah. Gin menyediakan satu siri fungsi pemprosesan terbina dalam yang membolehkan kami mengendalikan permintaan HTTP dengan cepat. Berikut ialah beberapa fungsi pemprosesan terbina dalam yang biasa digunakan:

  • c.Param(): Dapatkan parameter penghalaan berdasarkan gin.Konteks
  • c.Query(): Dapatkan parameter penghalaan berdasarkan gin.Parameter Pertanyaan Konteks
  • c.PostForm(): Dapatkan nilai medan borang berdasarkan gin.Context
  • c.File(): Hantar respons dengan kandungan fail yang ditentukan

Berikut ialah contoh aplikasi Gin yang mengandungi fungsi pemprosesan terbina dalam yang biasa digunakan:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

package main

 

import (

    "github.com/gin-gonic/gin"

)

 

type User struct {

    ID       int    `json:"id"`

    Name     string `json:"name"`

    Username string `json:"username"`

    Email    string `json:"email"`

}

 

func main() {

    // 初始化Gin

    r := gin.Default()

 

    // 定义路由

    r.GET("/users/:id", getUser)

    r.GET("/users", getUsers)

    r.POST("/users", createUser)

    r.PUT("/users/:id", updateUser)

    r.DELETE("/users/:id", deleteUser)

 

    // 启动HTTP服务

    r.Run(":8000")

}

 

func getUser(c *gin.Context) {

    id := c.Param("id")

 

    // 获取用户信息

    user := User{

        ID:       1,

        Name:     "John Doe",

        Username: "johndoe",

        Email:    "johndoe@example.com",

    }

 

    // 返回用户信息

    c.JSON(200, gin.H{

        "data": user,

    })

}

 

func getUsers(c *gin.Context) {

    // 获取所有用户信息

    users := []User{

        {

            ID:       1,

            Name:     "John Doe",

            Username: "johndoe",

            Email:    "johndoe@example.com",

        },

        {

            ID:       2,

            Name:     "Jane Doe",

            Username: "janedoe",

            Email:    "janedoe@example.com",

        },

    }

 

    // 返回所有用户信息

    c.JSON(200, gin.H{

        "data": users,

    })

}

 

func createUser(c *gin.Context) {

    // 获取新用户信息

    user := User{

        ID:       3,

        Name:     "Foo Bar",

        Username: "foobar",

        Email:    "foobar@example.com",

    }

 

    // 返回新用户信息

    c.JSON(200, gin.H{

        "data": user,

    })

}

 

func updateUser(c *gin.Context) {

    id := c.Param("id")

 

    // 获取更新的用户信息

    user := User{

        ID:       1,

        Name:     "John Doe",

        Username: "johndoe",

        Email:    "johndoe@example.com",

    }

 

    // 返回更新后的用户信息

    c.JSON(200, gin.H{

        "data": user,

    })

}

 

func deleteUser(c *gin.Context) {

    id := c.Param("id")

 

    // 删除指定的用户信息

    c.JSON(200, gin.H{

        "message": "User deleted successfully",

    })

}

Salin selepas log masuk

Dalam contoh ini, kami telah mentakrifkan lima laluan, setiap satunya mengendalikan kaedah permintaan dan jawapan yang berbeza. Dengan mengasingkan permintaan dan respons ini kepada fungsi yang berbeza, kami boleh menjadikan kod lebih mudah difahami dan diselenggara.

  1. Kesimpulan

Artikel ini memperkenalkan anda cara menggunakan rangka kerja Gin untuk membina API Web yang cekap. Selain itu, prinsip asas dan teknik pembangunan rangka kerja Gin juga diperkenalkan, termasuk penghalaan dan pemprosesan perisian tengah, permintaan HTTP dan pemprosesan tindak balas, dsb. Dengan sokongan rangka kerja Gin, bahasa Go telah menjadi platform pembangunan web yang berkuasa yang boleh memenuhi keperluan aplikasi dari semua saiz.

Atas ialah kandungan terperinci Amalkan bahasa: menggunakan gin untuk membina API Web yang cekap. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Tag artikel panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Cara menggunakan refleksi untuk mengakses medan dan kaedah persendirian dalam golang Cara menggunakan refleksi untuk mengakses medan dan kaedah persendirian dalam golang May 03, 2024 pm 12:15 PM

Cara menggunakan refleksi untuk mengakses medan dan kaedah persendirian dalam golang

Petua untuk mencipta fungsi baharu secara dinamik dalam fungsi golang Petua untuk mencipta fungsi baharu secara dinamik dalam fungsi golang Apr 25, 2024 pm 02:39 PM

Petua untuk mencipta fungsi baharu secara dinamik dalam fungsi golang

Perbezaan antara ujian prestasi dan ujian unit dalam bahasa Go Perbezaan antara ujian prestasi dan ujian unit dalam bahasa Go May 08, 2024 pm 03:09 PM

Perbezaan antara ujian prestasi dan ujian unit dalam bahasa Go

Apakah perangkap yang perlu kita perhatikan semasa mereka bentuk sistem teragih dengan teknologi Golang? Apakah perangkap yang perlu kita perhatikan semasa mereka bentuk sistem teragih dengan teknologi Golang? May 07, 2024 pm 12:39 PM

Apakah perangkap yang perlu kita perhatikan semasa mereka bentuk sistem teragih dengan teknologi Golang?

Perpustakaan dan alatan teknologi Golang yang digunakan dalam pembelajaran mesin Perpustakaan dan alatan teknologi Golang yang digunakan dalam pembelajaran mesin May 08, 2024 pm 09:42 PM

Perpustakaan dan alatan teknologi Golang yang digunakan dalam pembelajaran mesin

Evolusi konvensyen penamaan fungsi golang Evolusi konvensyen penamaan fungsi golang May 01, 2024 pm 03:24 PM

Evolusi konvensyen penamaan fungsi golang

Peranan teknologi Golang dalam pembangunan IoT mudah alih Peranan teknologi Golang dalam pembangunan IoT mudah alih May 09, 2024 pm 03:51 PM

Peranan teknologi Golang dalam pembangunan IoT mudah alih

Bolehkah parameter pembolehubah golang digunakan untuk mengembalikan nilai fungsi? Bolehkah parameter pembolehubah golang digunakan untuk mengembalikan nilai fungsi? Apr 29, 2024 am 11:33 AM

Bolehkah parameter pembolehubah golang digunakan untuk mengembalikan nilai fungsi?

See all articles