Ana içeriğe geç

cURL ve Diğer İstemciler

Her istemcinin üretilmiş kod ve tam bir RPC çerçevesine erişimi yoktur: belki yalın bir ortamda hata ayıklıyorsunuz ya da belki istemcileriniz iyi RPC bağlamaları olmayan bir dil veya çerçeve kullanıyor. Connect bu durumlarda öne çıkar: Connect protokolünü basit HTTP/1.1 istemcileriyle bile çalışabilen tekil RPC'ler gerçekleştirmek üzere tasarladık. (Elbette, herhangi bir gRPC veya gRPC-Web istemcisi kullanarak Connect API'lerini çağırabilirsiniz.)

cURL

Connect işleyicileri otomatik olarak JSON'u destekler. Çünkü Connect protokolü aynı zamanda tekil RPC'ler için standart HTTP başlıklarını kullanır, API'nizi çağırmak cURL ile tek satırlık bir komuttur:

$ curl --header "Content-Type: application/json" \
--data '{"sentence": "I feel happy."}' \
https://demo.connectrpc.com/connectrpc.eliza.v1.ElizaService/Say

Yanıt şöyledir:

{"sentence": "Feeling happy? Tell me more."}

Demo servisi canlıdır bu komutu denemekten çekinmeyin! Ayrıca bütün yanıt başlıklarını görmek için --verbose ile veya HTTP/2'ye yükselmeyi önlemek için --http1.1 ile de deneyebilirsiniz.

Aynı çağrıyı HTTP GET ile yapabilirsiniz; burada istek mesajı bir sorgu parametresinde kodlanır:

$ curl --get --data-urlencode 'encoding=json' \
--data-urlencode 'message={"sentence": "I feel happy."}' \
https://demo.connectrpc.com/connectrpc.eliza.v1.ElizaService/Say

Ayrıca bu URL'yi ziyaret edebilirsiniz tarayıcınızda. Tekil RPC'ler bir seçenekle HTTP GET desteğine dahil olabilir. Ayrıntılar için, özelliği tanıtan blog yazısına ve protokol spesifikasyonuna göz atın.

fetch API

@connectrpc/connect-web kullanmanızı öneririz, böylece derleyici kodunuzu tür kontrolünden geçirebilir, ancak tarayıcılar sadece fetch API ile Connect API'lerine kolayca tekil çağrılar yapabilirler. Geliştirici araçlarınızda hemen bunu deneyin:

fetch("https://demo.connectrpc.com/connectrpc.eliza.v1.ElizaService/Say", {
"method": "POST",
"headers": {"Content-Type": "application/json"},
"body": JSON.stringify({"sentence": "I feel happy."})
})
.then(response => { return response.json() })
.then(data => { console.log(data) })

HTTP GET ile aynı çağrı:

const url = new URL("https://demo.connectrpc.com/connectrpc.eliza.v1.ElizaService/Say");
url.searchParams.set("encoding", "json");
url.searchParams.set("message", JSON.stringify({"sentence": "I feel happy."}));
fetch(url)
.then(response => { return response.json() })
.then(data => { console.log(data) })

Buf Studio

Bir API'yi keşfetmek için görsel bir arayüz tercih ediyorsanız, Buf Studio'ya bir göz atın. Buf Studio, Buf Şema Kaydı üzerinde saklanan tüm Protobuf hizmetleriniz için etkileşimli bir web UI'dır.

ipucu

Bu metotları kullanarak Connect API'leriyle etkileşimde bulunurken cURL ve Fetch API arasında seçim yapabilirsiniz.