gRPC Practical Guide dengan Claude Code
Pelajari tentang grpc practical guide menggunakan Claude Code. Dilengkapi tips praktis dan contoh kode.
gRPCpengembangan dengan Claude Code: efisiensi
gRPC Google pengembangan 高効率なRPCframework 、Protocol Buffers よるtype safetyな通信 fitur.Claude Code 使えば、Protodefinisi dari server/clientimplementasiま 効率よく進められ.
Protocol Buffersdefinisi
servicedefinisiのpembuatan
> penggunamanajemenservice Protodefinisi buatkan.
> CRUDoperasi dan paginationdukungan daftarpengambilan 含めて。
// proto/user/v1/user.proto
syntax = "proto3";
package user.v1;
option go_package = "gen/user/v1;userv1";
service UserService {
rpc GetUser(GetUserRequest) returns (GetUserResponse);
rpc ListUsers(ListUsersRequest) returns (ListUsersResponse);
rpc CreateUser(CreateUserRequest) returns (CreateUserResponse);
rpc UpdateUser(UpdateUserRequest) returns (UpdateUserResponse);
rpc DeleteUser(DeleteUserRequest) returns (DeleteUserResponse);
// serverstreaming:大量pengguna エクスポート
rpc ExportUsers(ExportUsersRequest) returns (stream User);
}
message User {
string id = 1;
string name = 2;
string email = 3;
UserRole role = 4;
google.protobuf.Timestamp created_at = 5;
google.protobuf.Timestamp updated_at = 6;
}
enum UserRole {
USER_ROLE_UNSPECIFIED = 0;
USER_ROLE_ADMIN = 1;
USER_ROLE_MEMBER = 2;
USER_ROLE_VIEWER = 3;
}
message GetUserRequest {
string id = 1;
}
message GetUserResponse {
User user = 1;
}
message ListUsersRequest {
int32 page_size = 1;
string page_token = 2;
string filter = 3;
}
message ListUsersResponse {
repeated User users = 1;
string next_page_token = 2;
int32 total_count = 3;
}
message CreateUserRequest {
string name = 1;
string email = 2;
UserRole role = 3;
}
message CreateUserResponse {
User user = 1;
}
serverimplementasi(Go)
> 上記Protodefinisi gRPCserver Go dengan implementasiして。
> errorハンドリング dan インターセプター juga 含めて。
// internal/server/user.go
package server
import (
"context"
pb "myapp/gen/user/v1"
"google.golang.org/grpc/codes"
"google.golang.org/grpc/status"
)
type UserServer struct {
pb.UnimplementedUserServiceServer
repo UserRepository
}
func (s *UserServer) GetUser(
ctx context.Context,
req *pb.GetUserRequest,
) (*pb.GetUserResponse, error) {
if req.Id == "" {
return nil, status.Error(codes.InvalidArgument, "ID 必須 す")
}
user, err := s.repo.FindByID(ctx, req.Id)
if err != nil {
return nil, status.Error(codes.NotFound, "User not found")
}
return &pb.GetUserResponse{User: toProtoUser(user)}, nil
}
func (s *UserServer) ExportUsers(
req *pb.ExportUsersRequest,
stream pb.UserService_ExportUsersServer,
) error {
users, err := s.repo.FindAll(stream.Context())
if err != nil {
return status.Error(codes.Internal, "データpengambilan gagalしま")
}
for _, user := range users {
if err := stream.Send(toProtoUser(user)); err != nil {
return err
}
}
return nil
}
clientimplementasi(TypeScript)
// src/client/userClient.ts
import { createClient } from '@connectrpc/connect';
import { createGrpcTransport } from '@connectrpc/connect-node';
import { UserService } from '../gen/user/v1/user_connect';
const transport = createGrpcTransport({
baseUrl: 'https://api.example.com',
httpVersion: '2',
});
const client = createClient(UserService, transport);
// type safetyなAPI呼び出し
const response = await client.getUser({ id: 'user-123' });
console.log(response.user?.name);
// streaming
for await (const user of client.exportUsers({})) {
console.log(user.name);
}
インターセプター(middleware)
認証、logging、メトリクス収集 dll. 横断的関心事 インターセプター implementasi.Claude Code 「認証インターセプター penambahan 」 dan 依頼すれば、JWTtokenverifikasi インターセプター generate くれ.
比較 REST API
| 項目 | gRPC | REST |
|---|---|---|
| プロトコル | HTTP/2 | HTTP/1.1 or HTTP/2 |
| データ形式 | Protocol Buffers | JSON |
| type safety性 | 強い | tools依存 |
| streaming | ネイティブdukungan | WebSocket等 diperlukan |
| browserdukungan | gRPC-Webdiperlukan | ネイティブ |
Summary
Dengan Claude Code, gRPC Protodefinisi dari server/clientimplementasiま 効率よく進められ.microservices設計やAPIpengembanganpanduan juga 合わせて参考 .
Untuk gRPCの詳細, lihat gRPC公式ドキュメント.
Related Posts
Cara Mempercepat Side Project dengan Claude Code [Dengan Contoh]
Pelajari cara mempercepat project development personal secara drastis menggunakan Claude Code. Dilengkapi contoh nyata dan workflow praktis dari ide hingga deployment.
Cara Mengotomatisasi Refactoring dengan Claude Code
Pelajari cara mengotomatisasi code refactoring secara efisien menggunakan Claude Code. Dilengkapi prompt praktis dan pola refactoring konkret untuk project nyata.
Panduan Lengkap Konfigurasi CORS dengan Claude Code
Pelajari tentang panduan lengkap konfigurasi CORS menggunakan Claude Code. Dilengkapi tips praktis dan contoh kode.