@ connectrpc/ 连接- fastify
连接是一个图书馆大家庭,用于在不同语言和平台上建立和消费API,以及 @ connectrpc/ 连接 将带有Protobuf的 安全 API 带到 类型脚本 .
@connectrpc/connect-fastify 提供插件 粘贴,快速和
(原始内容存档于2018-10-21) (英语). leader web frame, for Node.js.
紧接接 Connect Plugin ()
将您的连接 RPC 插入到固定服务器中 .
// connect.ts
import { ConnectRouter } from "@connectrpc/connect";
export default function (router: ConnectRouter) {
// implement rpc Say(SayRequest) returns (SayResponse)
router.rpc(ElizaService, ElizaService.methods.say, async (req) => ({
sentence: `you said: ${req.sentence}`,
}));
}
// server.ts
import { fastify } from "fastify";
+ import routes from "connect";
+ import { fastifyConnectPlugin } from "@connectrpc/connect-fastify";
+ import { createValidateInterceptor } from "@connectrpc/validate";
const server = fastify({
http2: true,
});
+ await server.register(fastifyConnectPlugin, {
+ // Validation via Protovalidate is almost always recommended
+ interceptors: [createValidateInterceptor()],
+ routes
+ });
await server.listen({
host: "localhost",
port: 8080,
});
通过该服务器运行,您可以使用任意 gRPC, gRPC-Web, 或连接客户端来提出请求 .
buf curl gRPC 协议:
buf curl --schema buf.build/connectrpc/eliza \
--protocol grpc --http2-prior-knowledge \
-d '{"sentence": "I feel happy."}' \
http://localhost:8080/connectrpc.eliza.v1.ElizaService/Say
curl 与连接协议 :
curl \
--header "Content-Type: application/json" \
--data '{"sentence": "I feel happy."}' \
--http2-prior-knowledge \
http://localhost:8080/connectrpc.eliza.v1.ElizaService/Say
带有 gRPC 协议的节点(使用从 @ connectrpc/ 连接- 节点:
import { createClient } from "@connectrpc/connect";
import { createGrpcTransport } from "@connectrpc/connect-node";
import { ElizaService } from "./gen/eliza_connect.js";
const transport = createGrpcTransport({
baseUrl: "http://localhost:8080",
httpVersion: "2",
});
const client = createClient(ElizaService, transport);
const { sentence } = await client.say({ sentence: "I feel happy." });
console.log(sentence); // you said: I feel happy.
网页浏览器的客户端实际上与这个示例完全相同 - 它会
简单的使用 createConnectTransport 从 @ connectrpc/ 连接- web
换句话说.