react调用 grpc python Server
原载于:原文章%77w%77%2Ef%6F%72%61%73%70%2E%63n
react 通过前端grpc 调用 python server 服务,下面是react 代码以及相关配置。JavaScript 前端调用grpc 已经停止支持了。 都是通过vue 或者react 使用grpc 服务。
python 服务代码 请看 python 调用 grpc 包括后端服务
syntax = "proto3";
// 生成代码 python -m grpc_tools.protoc -I. --python_out=. --grpc_python_out=. Forasp.proto
// 包名称 与文件名一致
package Forasp;
service Rpc_server_name {
rpc Rpc_fun(reqArg) returns (retArg) {} // 双向非流 大写字母会在协议自动转为小写字母
}
// 定义请求reqArg 消息参数,
// 定义格式 类型 名称 = number;
// number 标示第几个参数
//任何参数操作,如果有下划线 _ 在生成协议时会变成驼峰
message reqArg {
string site_domain = 1;
int32 site_year = 2;
}
// 定义 返回retArg 中参数,return_str
message retArg {
string return_str = 1;
}
import React, { useEffect, useState } from 'react';
import logo from './logo.svg';
import './App.css';
import { Rpc_server_nameClient } from './Forasp_grpc_web_pb';
import { reqArg } from './Forasp_pb';
const App =()=> {
const [message, setMessage] = useState([]);
const onClick=()=>{
// 生成远程调用client, new proto类名+Client
const client = new Rpc_server_nameClient('http://192.168.5.126:8080', null, null);
const request = new reqArg(); // 这里新建请求参数对象,用于 请求参数赋值
request.setSiteDomain('www.forasp.cn'); // 前面定义的名称如果有下滑线自动回更换为驼峰
request.setSiteYear(18);
// 方法名称如果有大写字母会自动转为小写
client.rpc_fun(request, {}, (err, response) => {
if (err) {
console.error(err);
return;
}
// 获取返回值 为 getReturnStr() ReturnStr 是proto 协议中是return_str 自动转为驼峰
setMessage((message) => [...message, response.getReturnStr()]);
});
}
return (
<div className="App">
<header className="App-header">
<img src={logo} className="App-logo" alt="logo"/>
<p onClick={onClick}>
点击这里看www.forasp.cn信息 web grpc 调用python server
</p >
{message.map((item, index) => {
return <p key={index}>{index}----{item}</p >;
})}
</header>
</div>
);
}
export default App;
整体服务代码下载: react调用 grpc python Server 代码下载