前后端交互接口(三)

news/2024/11/13 23:37:34/

前后端交互接口(三)

前言

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

gateway.proto

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

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

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

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

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

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

//通信接口统一采用POST请求实现,正文采用protobuf协议进行组织
/*  HTTP HEADER:POST /service/xxxxxContent-Type: application/x-protobufContent-Length: 123xxxxxx-------------------------------------------------------HTTP/1.1 200 OK Content-Type: application/x-protobufContent-Length: 123xxxxxxxxxx
*/

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

再来看看网关约定的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的文件了。

那么这一集就先到这里。


http://www.ppmy.cn/news/1545910.html

相关文章

“单元测试”应该怎么写比较好

如何正确写单元测试 单元测试重要性写单元测试时存在的问题1、如何命名测试类&方法1.1、测试类命名规范1.2、测试方法命名规范 2、测试类的要求2.1测试行覆盖率100%2.2、单一职责2.3、可重复2.4、外部隔离,无任何外部依赖2.5、正确的使用断言2.6、不应该为了测试…

STM32单片机WIFI语音识别智能衣柜除湿消毒照明

实践制作DIY- GC0196-WIFI语音识别智能衣柜 一、功能说明: 基于STM32单片机设计-WIFI语音识别智能衣柜 二、功能介绍: STM32F103C系列最小系统板LCD1602显示器ULN2003控制的步进电机(柜门开关)5V加热片直流风扇紫外消毒灯DHT11…

python 语言入门

1.发展历程 之前国内(软件为主)使用最多的编程语言是 java(C难学,主要应用于开发硬件)。近年来由于 AI 的出现,python 逐渐火起来(之前火不起来,是因为它是脚本,脚本优点…

ThreadLocal从入门到精通

1.ThreadLocal是什么 ThreadLocal 是 Java 提供的一个用于线程存储本地变量的类。它为每个线程提供独立的变量副本,确保变量在多线程环境下的线程安全。每个线程访问 ThreadLocal 时,都会有自己专属的变量副本,互不干扰,避免了并…

Spring Boot 的核心原理和工作机制

1. 自动配置 (Auto-configuration) Spring Boot 的自动配置机制是它最引人注目的特性之一。它基于 Spring 的条件化配置(Conditional Configuration),允许 Spring Boot 根据类路径上的依赖和 Bean 的存在来决定如何配置应用。以下是自动配置的…

Rust常用数据结构教程 序列

文章目录 一、Vec1.Vec与堆栈2.什么时候需要Vec3.get()方法4.与枚举的结合 二、VecDeque1.什么情况适合VecDeque2.VecDeque的方法 三、LinkedList1.什么时候用LinkedList 参考 一、Vec 可变数组(vector)数组存储在heap上,在运行时(runtime)可以增加或减少数组 长度 有人把Ve…

怎样使用pycharm中的服务?

在PyCharm中使用服务,你需要执行以下步骤: 打开PyCharm,并在项目中创建一个新的Python文件。在Python文件中,编写你的代码来创建和使用服务。根据你想要使用的服务类型,可能需要安装相关的库或模块。在PyCharm的菜单栏…

Springboot+thymeleaf结合Vue,通过thymeleaf给vue赋值解决Vue的SEO问题

通过结合Spring Boot、Thymeleaf和Vue,可以充分利用Thymeleaf的服务端渲染功能,解决Vue全客户端渲染带来的SEO问题。以下是结合上述SEO优化重点的具体实现思路: 1. 在服务端渲染Title标签关键词 在Spring Boot控制器中定义页面的标题&#…