前后端交互接口(三)

前后端交互接口(三)

前言

前两集我们先做了前后端交互接口的约定以及浅浅的阅读了一些proto代码。那么这一集我们就来看看一些重要的proto代码,之后把protobuffer给引入我们的项目当中!

gateway.proto

我们来看一眼我们的网关proto代码!!!

在看之前,我们先来了解一下什么叫做网关。

网关,网关,其实就是一个入口。它通常是运行在服务器上的一个独立的服务或者是进程。它能够接受来自客户端的请求,然后根据相关配置以及业务的逻辑,将这些请求转发到一个或者多个后端服务器当中,当然这些后端服务器可以是数据库,也可以是微服务。他主要起到一个路由的作用。

所以我们的客户端是不需要去关注这个服务器的架构是什么样的,这需要和我们的网关服务器进行通信即可。

那么了解完网关的一个功能,我们就来看一眼我们的proto文件。

首先还是不能忘了我们的约法三章!统一使用POST发送请求、使用HTTP、Websocket协议、body使用protobuffer进行序列化/反序列化。

复制代码
//通信接口统一采用POST请求实现,正文采用protobuf协议进行组织
/*  
    HTTP HEADER:
    POST /service/xxxxx
    Content-Type: application/x-protobuf
    Content-Length: 123

    xxxxxx

    -------------------------------------------------------

    HTTP/1.1 200 OK 
    Content-Type: application/x-protobuf
    Content-Length: 123

    xxxxxxxxxx
*/

以上是我们客户端发送的请求以及服务端返回的响应。

再来看看网关约定的HTTP请求功能与接口路径关系

复制代码
    SERVICE HTTP PATH:
    {
        获取随机验证码                  /service/user/get_random_verify_code
        获取短信验证码                  /service/user/get_phone_verify_code
        用户名密码注册                  /service/user/username_register
        用户名密码登录                  /service/user/username_login
        手机号码注册                    /service/user/phone_register
        手机号码登录                    /service/user/phone_login
        获取个人信息                    /service/user/get_user_info
        修改头像                        /service/user/set_avatar
        修改昵称                        /service/user/set_nickname
        修改签名                        /service/user/set_description
        修改绑定手机                    /service/user/set_phone

        获取好友列表                    /service/friend/get_friend_list
        获取好友信息                    /service/friend/get_friend_info
        发送好友申请                    /service/friend/add_friend_apply
        好友申请处理                    /service/friend/add_friend_process
        删除好友                        /service/friend/remove_friend
        搜索用户                        /service/friend/search_friend
        获取指定用户的消息会话列表       /service/friend/get_chat_session_list
        创建消息会话                    /service/friend/create_chat_session
        获取消息会话成员列表             /service/friend/get_chat_session_member
        获取待处理好友申请事件列表       /service/friend/get_pending_friend_events

        获取历史消息/离线消息列表        /service/message_storage/get_history
        获取最近N条消息列表             /service/message_storage/get_recent
        搜索历史消息                    /service/message_storage/search_history
        
        发送消息                        /service/message_transmit/new_message

        获取单个文件数据                /service/file/get_single_file
        获取多个文件数据                /service/file/get_multi_file
        发送单个文件                    /service/file/put_single_file
        发送多个文件                    /service/file/put_multi_file

        语音转文字                     /service/speech/recognition
    }

哦对,虽然说我们的Websocket是服务端主动给客户端进行推送消息,但是你一开始不建立连接怎么推送?你客户端有了之后,服务端又不能直接知道你客户端的相关信息。所以有了以下内容。

复制代码
/*
    消息推送使用websocket长连接进行
    websocket长连接转换请求:ws://host:ip/ws
    长连建立以后,需要客户端给服务器发送一个身份验证信息
*/
message ClientAuthenticationReq {
    string request_id = 1;
    string session_id = 2;
}

这里的session_id是我们的登录回话id,切记不是我们的聊天会话id,不要搞混了。

引入Protobuf

第一步,点击进入CMakeLists.txt的文件当中

第二步,修改cmake的最小依赖版本为3.16

第三步,在这个末尾加上Protobuf

第四步,将proto文件放入项目当中

第五步,继续在CMakeLists.txt的文件当中添加下面的两行代码

第六步,点击项目,点击构建,再点击当前配置,加入protobuffer的路径(记得用vcpkg下载)

之后就可以看到我们的项目中添加了proto的文件了。

那么这一集就先到这里。

相关推荐
编程在手天下我有2 分钟前
Redis 数据类型全览:特性、场景与操作实例
数据库·redis·数据结构与算法
左灯右行的爱情6 分钟前
缓存并发更新的挑战
jvm·数据库·redis·后端·缓存
老秦包你会9 分钟前
Linux课程五课---Linux进程认识1
linux·运维·服务器
等猪的风22 分钟前
openwrt作旁路由时的几个常见问题 openwrt作为旁路由配置zerotier 图文讲解
运维·服务器·网络
互联网搬砖老肖26 分钟前
运维打铁:域名详解及常见问题解决
运维·github
千码君201639 分钟前
什么是数据链路层的CRC检测以及为什么要放到帧尾?
服务器·网络·网络协议·以太网·奇偶校验·crc检测·以太网帧
Qiuner1 小时前
软件设计师速通其一:计算机内部数据表示
服务器·数据库·信号处理
LaughingZhu1 小时前
PH热榜 | 2025-04-24
运维·经验分享·搜索引擎·产品运营·jenkins
刘某的Cloud1 小时前
openstack迁移虚机rbd报错,删除异常rbd
linux·运维·openstack·nova·rbd
啊吧怪不啊吧1 小时前
Linux权限概念讲解
linux·运维·服务器