trpc-group / trpc-cpp

A pluggable, high-performance RPC framework written in cpp
Other
270 stars 78 forks source link

【腾讯犀牛鸟计划】使用tRPC-Cpp开发一个http服务 #137

Closed weimch closed 2 months ago

weimch commented 2 months ago

issue介绍

tRPC从设计本身就支持多种协议,http作为一种通用的web协议被广受使用,当前tRPC-Cpp支持两种http服务服务开发方式,普通http模式下你可以直接读写http请求和响应对象,http rpc模式下,你可以复用已有的proto接口设计,只需关心pb对象的读写。

你需要使用这两种开发方式,完成同样的需求,并使用腾讯文档输出一份报告到issue回复里,报告需要包含你的实践过程(关键代码及日志输出等)以及两种不同方式的心得体会(你可以通过对比得出两种方法的适用场景),最后提交相关变更代码到你个人的repo以及编译运行指引到issue回复里,方便我们测试验证你的确完成了issue。

具体地,你可以按下面的步骤完成此issue 1、服务端定义一个http接口,uri为/issueshoot-test,客户端传入json数据:{ name: "issueshooter", age: 18, hobby: ["opensource project","movies", "books"] },服务端回显 {msg: "your name is issueshooter who likes opensource project mostly."},你可以基于examples/features/http完成此接口的开发与测试 2、proto定义新增一个rpc接口IssueshootTest,根据1中描述的信息设计请求pb和响应pb的结构,你可以基于examples/features/http_rpc完成此接口的开发与测试,注意http_rpc是注册了examples/helloworld定义的service,并且http_rpc与helloworld之间只有yaml的protocol字段不同,实际你可以直接在helloworld里进行开发与测试。 3、【可选】协议是语言与框架无关的,你可以通过curl来测试1中开发的服务端能正常处理http请求和响应,使用protocurl来测试2中开发的服务端能正常处理pb请求和响应。

参考资料

1、http服务端开发指南:https://github.com/trpc-group/trpc-cpp/blob/main/docs/zh/http_protocol_service.md 2、http客户端开发指南:https://github.com/trpc-group/trpc-cpp/blob/main/docs/zh/http_protocol_client.md

其他说明

本issue为2024犀牛鸟开源人才培养活动专属issue,仅供在校大学生参与领取 【认领issue】在研学基地"issue营地"对应issue行的M~R列抢滩报名,即视为认领成功。 【完成issue】已认领issue的同学,请同步在本issue评论区回复“已成功领取本issue”; 如7天内无提交任何进展包括不限于comment \ commit \ Pull Request,则将视为同学主动放弃issue,组委会将释放issue给下一位等候者。

liuwenbo0 commented 2 months ago

已成功领取本issue

liuwenbo0 commented 2 months ago

fork trpc-cpp仓库至个人仓库,并基于个人仓库进行issue实践

liuwenbo0 commented 2 months ago

已完成issue中指定的步骤,具体可以移步我fork下来的个人仓库中查看。 http接口定义在trpc-cpp/examples/features/http目录下,参照该目录下的README.md分别用run.sh和curl命令进行测试。 httprpc接口定义在trpc-cpp/examples/features/http_rpc目录下,参照该目录下的README.md分别用run.sh和protocurl命令进行测试。

liuwenbo0 commented 2 months ago

完成了Issue实现总结报告,如果哪里需要修改烦请指出。

weimch commented 2 months ago

文档review通过,代码编译测试验证成功,完成此体验的issue。