写给公司新入职前端的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接口调用方法》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

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

算法的陷阱

算法的陷阱

阿里尔•扎拉奇 (Ariel Ezrachi)、莫里斯•E. 斯图克 (Maurice E. Stucke) / 余潇 / 中信出版社 / 2018-5-1 / CNY 69.00

互联网的存在令追求物美价廉的消费者与来自世界各地的商品只有轻点几下鼠标的距离。这诚然是一个伟大的科技进步,但却也是一个发人深思的商业现象。本书中,作者扎拉奇与斯图克将引领我们对由应用程序支持的互联网商务做出更深入的检视。虽然从表面上看来,消费者确是互联网商务兴盛繁荣过程中的获益者,可精妙的算法与数据运算同样也改变了市场竞争的本质,并且这种改变也非总能带来积极意义。 首当其冲地,危机潜伏于计算......一起来看看 《算法的陷阱》 这本书的介绍吧!

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

在线压缩/解压 JS 代码

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

在线图片转Base64编码工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换