|
@@ -10,9 +10,9 @@
|
|
//登录请求 1005
|
|
//登录请求 1005
|
|
message login_req
|
|
message login_req
|
|
{
|
|
{
|
|
- bytes phone = 1;
|
|
|
|
|
|
+ string phone = 1;
|
|
uint32 type = 2;//登录类型,1:密码登录,2:验证码登录
|
|
uint32 type = 2;//登录类型,1:密码登录,2:验证码登录
|
|
- bytes verifyInfo = 3;//1密码,2验证码
|
|
|
|
|
|
+ string verifyInfo = 3;//1密码,2验证码
|
|
int64 time = 4;//纳秒,游客登陆用的
|
|
int64 time = 4;//纳秒,游客登陆用的
|
|
uint32 systemType = 5;//系统类型,0全部,1:ios,2:android
|
|
uint32 systemType = 5;//系统类型,0全部,1:ios,2:android
|
|
|
|
|
|
@@ -22,8 +22,8 @@ message login_req
|
|
message login_rsp {
|
|
message login_rsp {
|
|
ErrorInfo errInfo = 1; // 错误码信息
|
|
ErrorInfo errInfo = 1; // 错误码信息
|
|
uint32 id = 2;
|
|
uint32 id = 2;
|
|
- bytes token = 3; // 访问令牌
|
|
|
|
- bytes sskey = 4;
|
|
|
|
|
|
+ string token = 3; // 访问令牌
|
|
|
|
+ string sskey = 4;
|
|
}
|
|
}
|
|
```
|
|
```
|
|
**注意 不要直接copy过来,message的field的命名要按照驼峰命名原则,要不然会出问题。**
|
|
**注意 不要直接copy过来,message的field的命名要按照驼峰命名原则,要不然会出问题。**
|
|
@@ -36,49 +36,14 @@ message login_rsp {
|
|
npx pbjs -t static-module -w commonjs -o proto/bundle.js proto/*.proto
|
|
npx pbjs -t static-module -w commonjs -o proto/bundle.js proto/*.proto
|
|
```
|
|
```
|
|
|
|
|
|
-### 第二步:coding request message的编码和response message的解码
|
|
|
|
|
|
+### 第二步:在protoMap.js里面添加servant对应的message
|
|
在common下protoMap.js里面添加请求message的编码方法,和响应message的解码方法
|
|
在common下protoMap.js里面添加请求message的编码方法,和响应message的解码方法
|
|
|
|
|
|
```js
|
|
```js
|
|
-//1005 是后端提供的此接口的servant
|
|
|
|
-protoMap['1005'] = {
|
|
|
|
- requestEncode: function(request) { //登录请求的编码
|
|
|
|
- //创建login_req的message对象
|
|
|
|
- let loginMessage = user.login_req.create({
|
|
|
|
- type: request.data.type,
|
|
|
|
- //如果phone定义的是bytes,这里要转换一下,
|
|
|
|
- //如果phone定义的是string,这里就不需要Buffer.from了
|
|
|
|
- //要确认phone是string类型,才能把phone的bytes更换成string
|
|
|
|
- phone: Buffer.from(request.data.phone),
|
|
|
|
- //同phone,在proto文件中字段名(verifyInfo)最好用驼峰命名规则,不要用verify_info
|
|
|
|
- verifyInfo: Buffer.from(request.data.verifyInfo),
|
|
|
|
- })
|
|
|
|
- //login_req的message 编码转换为Buffer数据
|
|
|
|
- let buffer = user.login_req.encode(loginMessage).finish()
|
|
|
|
- //返回请求的ArrayBuffer
|
|
|
|
- return getRequestBuffer(request,buffer)
|
|
|
|
- },
|
|
|
|
- responseDecode: function(response) { //登录响应的解码
|
|
|
|
- //得到loginRsp message的buffer数据
|
|
|
|
- let loginRspBuf = getResponseDataBuf(response)
|
|
|
|
- //解码得到loginRsp的message对象
|
|
|
|
- let loginRspMessage = user.login_rsp.decode(loginRspBuf)
|
|
|
|
- //把loginRsp Message对象转换为js对象
|
|
|
|
- let obj = user.login_rsp.toObject(loginRspMessage, {
|
|
|
|
- longs: String,
|
|
|
|
- enums: String,
|
|
|
|
- })
|
|
|
|
- //如果proto定义的字段是bytes,在这里可以转换成一下String
|
|
|
|
- //也可以直接在proto文件中把字段的bytes 类型 替换成string类型,
|
|
|
|
- //但是要确认这个字段是string类型的,string类型在这里就不需要转换了
|
|
|
|
- if(typeof obj.errInfo.errorMessage !== 'undefined'){
|
|
|
|
- obj.errInfo.errorMessage = Buffer.from(obj.errInfo.errorMessage).toString()
|
|
|
|
- }
|
|
|
|
- if(typeof obj.token !== 'undefined'){
|
|
|
|
- obj.token = Buffer.from(obj.token).toString()
|
|
|
|
- }
|
|
|
|
- return obj
|
|
|
|
- }
|
|
|
|
|
|
+const protoMap = {
|
|
|
|
+ 1005: user.login_req,//登录请求
|
|
|
|
+ 1006: user.login_rsp,//登录返回
|
|
|
|
+ // ... more
|
|
}
|
|
}
|
|
```
|
|
```
|
|
|
|
|
|
@@ -90,7 +55,10 @@ post({
|
|
server:2,//后端提供的此接口的server
|
|
server:2,//后端提供的此接口的server
|
|
servant:1005,//后端提供的此接口的servant
|
|
servant:1005,//后端提供的此接口的servant
|
|
data:{
|
|
data:{
|
|
- phone:'13246541321',//对应loginReq的phone字段
|
|
|
|
|
|
+ //对应loginReq的phone字段,如果proto文件里是bytes类型,
|
|
|
|
+ //可以通过Buffer.from('3246541321')来转换
|
|
|
|
+ //例如: phone:Buffer.from('3246541321'),
|
|
|
|
+ phone:'13246541321',
|
|
type:1,//同上
|
|
type:1,//同上
|
|
verifyInfo:'asdasd'//同上
|
|
verifyInfo:'asdasd'//同上
|
|
}
|
|
}
|
|
@@ -124,7 +92,7 @@ async function someFun(){
|
|
let res2 = await post({
|
|
let res2 = await post({
|
|
server:2,
|
|
server:2,
|
|
servant:911,
|
|
servant:911,
|
|
- data:{ filed1:res1.data.somefield,
|
|
|
|
|
|
+ data:{ var1:res1.data.somefield,
|
|
......}
|
|
......}
|
|
})
|
|
})
|
|
}
|
|
}
|