写给公司新入职前端的protobuf接口调用方法

栏目: 服务器 · 发布时间: 6年前

内容简介:本篇包含以下内容:

这只是一篇针对公司内部的指引导性的文档,不是一篇教程。

数据层面前段如何与后端对接

本篇包含以下内容:

1、接口技术简介

2、如何与后端对接

一、接口技术简介

我们使用的gRPC来进行前后台的数据对接。看下官方介绍

gRPC is a modern open source high performance RPC framework that can run in any environment.

——-https://grpc.io/about/

gRPC 一开始由 google 开发,是一款语言中立、平台中立、开源的远程过程调用(RPC)系统。

——- http://doc.oschina.net/grpc?t=58008

(没有找到中文官网,如果找到请添加到这)

好了以上这些。。。了解一下,也可以就是看看,下面是我们日常使用的主角。

gRPC 默认使用 protocol buffers ,这是 Google 开源的一套成熟的结构数据序列化机制,别紧张他就如同json一样是一种数据序列化的协议,gRPC也可以使用json作为数据传输格式。

是的,我们使用的就是protobuf,所以重点是要了解这个。

可以去官网或者其他地方找个教程看一下,总体来说比较简单,需要重点关注的是protobuf协议下数据类型对应的js下的数据类型。

使用protobuf的方式也很简单:

“你只需要将要被序列化的数据结构定义一次( 译注: 使用.proto文件定义),便可以使用特别生成的源代码( 译注: 使用protobuf提供的生成工具)轻松的使用不同的数据流完成对这些结构数据的读写操作,即使你使用不同的语言(译注:protobuf的跨语言支持特性)”

简单讲就是,在.proto 文件中制定协议,然后使用编译器生成特定语言的数据访问类,这个类里边包含了序列化,反序列化,toObject,设置/获取参数,转化成二进制数据等方法。

这些方法根据不同语言版本都有生成不同的文件,使用时可以根据不同语言自身语法进行调用,使用起来相当方便。

教程参见文末“参考网址”

二、如何与后端对接

根据上面说的,对接基本步骤如下:

查看协议组装参数>调用接口类的方法>发送请求>解析返回值。

项目中协议文件是后端已经写好的,js的调用类也是编译好的,我们只管用就好了

写给公司新入职前端的protobuf接口调用方法

上图是proto库的文件目录,go的是golang的,后端使用的,grpc-web和js文件夹是js的,前端使用的。proto文件夹里边是协议文件。

我们需要查看的协议文件如下图,api和common里边的协议文件。

写给公司新入职前端的protobuf接口调用方法

如打开api>v1>account.proto文件,会看到下图这种

写给公司新入职前端的protobuf接口调用方法

rpc后边这些就都是方法名称,在account.js内可以找到对应的方法名(通常是这个名字然后首字母小写)

方法名称后边括弧紧跟的是参数,参数在文件内有定义,或者在其他文件内有定义,根据路径可以查看。例如在accout.proto内查找RegisterReq会找到下面的定义

写给公司新入职前端的protobuf接口调用方法

参数有5个字段,email,passkey,sig,passwd_level,verify。

前面三个都是字符串或者字节数组类型,后边的passwd_level是PasswdLevel类型,verify是VerifyReq类型,这俩类型是自定义的。

再查找这个类如下:

写给公司新入职前端的protobuf接口调用方法

这就是PasswdLevel的定义,可以看到有这么几个值。前边的enum显示这是一个枚举类型,根据相应的level选择值就可以了。

Verify的类型定义如下,context字段是后端返回结果带过来的上下文,这个文件当中也有定义,可以继续再往下查找查看具体内容。

写给公司新入职前端的protobuf接口调用方法

根据上边的查看步骤,层层组装好参数就可以了。

编译器会根据proto文件生成对应的类。

比如api>v1>account.proto编译后会对应的生成 api>v1>account.js ,js里边会给出一个类,打开account.js可以看到代码第一行goog.provide('proto.biss.api.v1.account.AccountClient');

这货就是生成的account的类,那么以后调用account下的方法时就要实例化这个类了

account.proto中定义的方法也会出现在这个文件中(通常是这个名字然后首字母小写)

方法的请求参数和返回数据需要在 js>api>v1下对应的文件内查看。比如registerReq这个类的定义。里边还会包含参数对应的操作方法(toObject,序列化这些)

调用接口类和发送请求在项目中已经封装了send方法可以直接用。使用方法参见api的说明。

返回结果后根据不同的数据返回类型调用不同的方法获取就可以了。之前提到的反序列,toObject,这些方法。

参考地址:

gRPC官网地址: https://grpc.io

gRPC中文文档地址: http://doc.oschina.net/grpc?t=58008

protobuf协议git仓库地址: https://github.com/protocolbuffers/protobuf

protobuf文档地址: https://developers.google.com/protocol-buffers/


以上所述就是小编给大家介绍的《写给公司新入职前端的protobuf接口调用方法》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Google總部大揭密

Google總部大揭密

史蒂芬.李維 / 陳重亨 / 財信 / 2011-11

∣如果有一天,Google的搜尋引擎突然故障 ∣GMAIL信件全數消失 ∣Google Maps、Google Docs、Google行事曆等所有雲端服務全面停擺 ∣我們該怎麼辦?! 歷史上像Google如此成功,且廣受推崇的企業可沒幾家。它改變了網路的使用方式,也成了我們生活不可或缺的一部分。這到底是怎麼辦到的? 《連線》雜誌資深主筆史蒂芬.李維史無前例同時取得LS......一起来看看 《Google總部大揭密》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具