Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk membina API RESTful menggunakan Golang dan menggunakan gRPC?

Bagaimana untuk membina API RESTful menggunakan Golang dan menggunakan gRPC?

WBOY
Lepaskan: 2024-05-31 19:46:00
asal
635 orang telah melayarinya

如何使用 Golang 构建 RESTful API 并使用gRPC?

Membina API RESTful dan gRPC menggunakan Golang

Dalam artikel ini, kami akan memperkenalkan cara mencipta perkhidmatan RESTful API dan gRPC di Golang. Kami akan merangkumi proses persediaan asas, menggunakan rangka kerja dan memberikan contoh praktikal.

RESTful API

1. Sediakan persekitaran

  • Pasang Golang dan konfigurasikan pembolehubah persekitaran GOPATH.
  • Pasang rangka kerja Gin: pergi dapatkan github.com/gin-gonic/gingo get github.com/gin-gonic/gin

2. 创建 RESTful API

main.go 文件中:

package main

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

func main() {
    router := gin.Default()
    
    router.GET("/hello", HelloHandler)
    router.Run() // 监听端口
}

func HelloHandler(c *gin.Context) {
    c.JSON(200, gin.H{
        "message": "Hello, world!",
    })
}
Salin selepas log masuk

gRPC

1. 设置环境

  • 安装 Golang 和 Google Cloud Go SDK:go mod tidy
  • 安装 gRPC:go get github.com/golang/protobuf/protoc-gen-go

2. 定义 protobuf

创建一个 .proto 文件,定义服务接口和消息类型:

syntax = "proto3";
package example;
message HelloRequest {
  string name = 1;
}
message HelloResponse {
  string message = 1;
}
service HelloService {
  rpc SayHello (HelloRequest) returns (HelloResponse);
}
Salin selepas log masuk

3. 生成 gRPC 代码

使用 protoc 生成 Go 代码:

protoc --go_out=. --go-grpc_out=. hello.proto
Salin selepas log masuk

4. 创建 gRPC 服务

main.go

2 Cipta API RESTful

dalam main.go</. kod> Dalam fail: <p><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:go;toolbar:false;'>package main import ( &quot;context&quot; &quot;fmt&quot; &quot;log&quot; &quot;net&quot; &quot;example/hello&quot; &quot;google.golang.org/grpc&quot; ) type helloServer struct{} func (s *helloServer) SayHello(ctx context.Context, req *hello.HelloRequest) (*hello.HelloResponse, error) { return &amp;hello.HelloResponse{Message: &quot;Hello, &quot; + req.Name}, nil } func main() { lis, err := net.Listen(&quot;tcp&quot;, &quot;:5000&quot;) if err != nil { log.Fatalf(&quot;failed to listen: %v&quot;, err) } s := grpc.NewServer() hello.RegisterHelloServiceServer(s, &amp;helloServer{}) log.Println(&quot;gRPC server listening on port 5000&quot;) if err := s.Serve(lis); err != nil { log.Fatalf(&quot;failed to serve: %v&quot;, err) } }</pre><div class="contentsignin">Salin selepas log masuk</div></div><p>gRPC<strong></strong></p> <p>1. Sediakan persekitaran </p>🎜🎜🎜Pasang Golang dan Google Cloud Go SDK: <code>go mod tidy🎜🎜: pergi dapatkan github.com/golang/protobuf/protoc-gen-go🎜🎜🎜2. Tentukan protobuf🎜🎜🎜Buat fail .proto untuk mentakrifkan perkhidmatan. antara muka dan jenis mesej: 🎜 rrreee🎜🎜3. Jana kod gRPC🎜🎜🎜Gunakan protok untuk menjana kod Go:🎜rrreee🎜🎜4. Cipta perkhidmatan gRPC🎜🎜🎜 dalam fail >.go🎜rrreee🎜🎜Kes praktikal: API Blog 🎜🎜🎜 Gunakan API RESTful dan gRPC untuk membina API blog yang membolehkan pengguna membuat, membaca, mengemas kini dan memadam catatan blog. 🎜🎜🎜Kesimpulan🎜🎜🎜Dalam artikel ini, kami memperkenalkan cara membina RESTful API dan perkhidmatan gRPC menggunakan Golang. Kami menggunakan rangka kerja Gin untuk menyediakan API RESTful dan mencipta contoh yang berfungsi untuk API blog menggunakan gRPC. Gabungan teknologi ini membolehkan anda membina aplikasi API yang cekap dan berskala. 🎜

Atas ialah kandungan terperinci Bagaimana untuk membina API RESTful menggunakan Golang dan menggunakan gRPC?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan