前后端交互接口(三)

前后端交互接口(三)

前言

前两集我们先做了前后端交互接口的约定以及浅浅的阅读了一些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.xdnf.cn/news/7388.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

【Python TensorFlow】进阶指南

在前文中,我们介绍了TensorFlow的基础知识及其在实际应用中的初步使用。现在,我们将进一步探讨TensorFlow的高级特性,包括模型优化、评估、选择、高级架构设计、模型部署、性能优化等方面的技术细节,帮助读者达到对TensorFlow的精…

2款使用.NET开发的数据库系统

今天大姚给大家分享2款使用.NET开发且开源的数据库系统。 Garnet Garnet是一款由微软研究院基于.NET开源的高性能、跨平台的分布式缓存存储数据库,该项目提供强大的性能(吞吐量和延迟)、可扩展性、存储、恢复、集群分片、密钥迁移和复制功能…

【react】React Router基础知识

1. 基础用法 npm i react-router-dom通过浏览器地址栏的切换,可以实现不同组件之间的切换。 import React from "react"; import ReactDOM from "react-dom/client"; // import App from "./App"; import reportWebVitals from &qu…

std::back_inserter

std::back_inserter 是 C 标准库中的一个函数模板&#xff0c;它用于创建一个插入迭代器&#xff08;insert iterator&#xff09;&#xff0c;这个迭代器可以在容器末尾插入新元素。它定义在 <iterator> 头文件中。 函数原型 template <typename Container> bac…

使用 FFmpeg 进行音视频转换的相关命令行参数解释

FFmpeg 是一个强大的多媒体框架&#xff0c;能够解码、编码、转码、录制、播放以及流化几乎所有类型的音频和视频。它广泛应用于音视频处理任务中&#xff0c;包括格式转换、剪辑、合并、水印添加等。本文中简鹿办公将介绍如何使用 FFmpeg 进行一些常见的音视频转换任务。 安装…

力扣:94--中序遍历二叉树

树 – 二叉树 完全二叉树&#xff1a; 完全二叉树可以用数组完美匹配位置&#xff08;先序存储&#xff1a;根左右&#xff09;&#xff0c; 推论一 &#xff1a; 位置为k的节点&#xff0c;左孩子&#xff1a;2*k 1 &#xff0c;右孩子 &#xff1a; 2 * &#xff08;k 1&…

CSS——选择器、PxCook软件、盒子模型

选择器 结构伪类选择器 作用&#xff1a;根据元素的结构关系查找元素。 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0&quo…

SpringMVC学习记录(三)之响应数据

SpringMVC学习记录&#xff08;三&#xff09;之响应数据 一、页面跳转控制1、快速返回模板视图2、转发和重定向 二、返回JSON数据1、前置准备2、ResponseBody 三、返回静态资源1、静态资源概念2、访问静态资源 /*** TODO: 一个controller的方法是控制层的一个处理器,我们称为h…

推荐一款ETCD桌面客户端——Etcd Workbench

Etcd Workbench 我相信很多人在开始管理ETCD的时候都去搜了Etcd客户端工具&#xff0c;然后找到了官方的Etcd Manager&#xff0c;但用完之后发现它并不好用&#xff0c;还不支持多连接和代码格式化&#xff0c;并且已经好几年不更新了&#xff0c;于是市面上就有了好多其他客…

FET113i-S核心板已支持RISC-V,打造国产化降本的更优解 -飞凌嵌入式

FET113i-S核心板是飞凌嵌入式基于全志T113-i处理器设计的国产工业级核心板&#xff0c;凭借卓越的稳定性和超高性价比&#xff0c;FET113i-S核心板得到了客户朋友们的广泛关注。作为一款拥有A7核RISC-V核DSP核的多核异构架构芯片&#xff0c;全志科技于近期释放了T113-i的RISC-…

实践出真知:MVEL表达式中for循环的坑

目录标题 背景MVEL脚本(有问题的)MVEL脚本(正确的)结论分析 背景 需要从一个URL的拼接参数中解析出id的值并输出 比如&#xff1a; 存在URLhttps://xxxxxxxxxx?id999999&type123&name345 然后需要输出id999999 MVEL脚本(有问题的) 入参&#xff1a;parseThisUrlhttp…

【数据集】【YOLO】【目标检测】道路裂缝数据集 5466 张,YOLO/VOC格式标注!

数据集介绍 【数据集】道路裂缝数据集 5466 张&#xff0c;目标检测&#xff0c;包含YOLO/VOC格式标注。数据集中包含一种分类&#xff0c;检测范围城市道路裂缝、高速道路裂缝、乡村道路裂缝。 戳我头像获取数据&#xff0c;或者主页私聊博主哈~ 一、数据概述 道路裂缝检测…

SCRM开发新趋势打造高效客户关系管理系统

内容概要 在当今数字化的浪潮中&#xff0c;客户关系管理&#xff08;SCRM&#xff09;系统的开发正迎来了突破性的新趋势。传统的客户管理方式已经无法满足现代企业对灵活性与高效性的需求&#xff0c;我们必须顺应时代的发展&#xff0c;采用更为智能化的解决方案。SCRM开发…

WordPress在windows下安装

目录 一、WordPress下载官网 二、配置 WordPress 三、安装WordPress 1、打开测试域名安装 2、创建数据库 3、配置数据库账号密码 4、设置后台账号密码 5、安装成功后点登录即可 一、WordPress下载官网 点击下面下载链接&#xff0c;下载安装包&#xff0c;并且php和mys…

Pytorch(二)

五、torchvision 5.1 torchvision中的Datasets 5.1.1 下载数据集 torchvision 文档列出了很多科研或者毕设常用的一些数据集&#xff0c;如入门数据集MNIST&#xff0c;用于手写文字。这些数据集位于torchvision.datasets模块&#xff0c;可以通过该模块对数据集进行下载&am…

二分查找算法—C++

一&#xff0c;二分查找 1&#xff0c;题目描述 在一个给定的有序数组中&#xff0c;查找目标值target&#xff0c;返回它的下标。如果不存在&#xff0c;返回-1 2&#xff0c;思路 解法一&#xff1a;暴力枚举&#xff0c;遍历整个数组&#xff0c;直到找到目标值&#xff…

PyQt5实战——UTF-8编码器UI页面设计以及按钮连接(五)

个人博客&#xff1a;苏三有春的博客 系类往期文章&#xff1a; PyQt5实战——多脚本集合包&#xff0c;前言与环境配置&#xff08;一&#xff09; PyQt5实战——多脚本集合包&#xff0c;UI以及工程布局&#xff08;二&#xff09; PyQt5实战——多脚本集合包&#xff0c;程序…

Call For Speaker! |2025中国国际音频产业大会(GAS)演讲嘉宾征集令启动!

2025中国国际音频产业大会&#xff08;GAS&#xff09;已定档2025年3月26-27日。 GAS 2025演讲嘉宾征集正式启动&#xff01;我们将再次汇聚音频领域的专家和行业领袖&#xff0c;力求为与会者呈现一场内容丰富、精彩纷呈的知识盛宴。 SPRGASING FESTIVAL 如果 您在音频领域…

安装docker-compose

安装包地址https://github.com/docker/compose/releases wget https://github.com/docker/compose/releases/download/v2.30.3/docker-compose-Linux-x86_64 mv docker-compose-Linux-x86_64 /usr/local/bin/docker-compose chmod x /usr/local/bin/docker-compose docker-com…

【355】基于springboot的助农管理系统

助农管理系统的设计与实现 摘要 近年来&#xff0c;信息化管理行业的不断兴起&#xff0c;使得人们的日常生活越来越离不开计算机和互联网技术。首先&#xff0c;根据收集到的用户需求分析&#xff0c;对设计系统有一个初步的认识与了解&#xff0c;确定助农管理系统的总体功…