
Hyperf框架创建json-rpc服务
发布日期:2021-05-27 00:20:17
浏览次数:48
分类:精选文章
本文共 1465 字,大约阅读时间需要 4 分钟。
我们需要创建一个用户服务供其他服务调用,以实现认证和鉴权。这个服务将通过JSON-RPC协议提供接口,并在9504端口上监听。完成后,我们可以使用Postman进行测试。
配置Json-Rpc服务
首先,我们在配置文件中添加一个Json-Rpc服务监听项。具体配置如下:
{ 'name' => 'jsonrpc-http', 'type' => Server::SERVER_HTTP, 'host' => '0.0.0.0', 'port' => 9504, 'sock_type' => SWOOLE_SOCK_TCP, 'callbacks' => [ SwooleEvent::ON_REQUEST => [Hyperf\JsonRpc\HttpServer::class, 'onRequest'], ],}
服务接口
服务接口为/user/checkToken
,接收两个参数:一个是token,另一个是权限。此方法首先验证token是否有效。验证成功后,将返回用户详情;如果验证失败,会返回错误信息。
请求示例(使用Postman发送):
{ "jsonrpc": "2.0", "method": "/user/checkToken", "params": ["eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJqdGkiOiI1ZGNhM2RjZjE2NDQzIiwiaWF0IjoxNTczNTM1MTgzLCJuYmYiOjE1NzM1MzUxODMsImV4cCI6MTU3MzU0MjM4MywidXNlcl9pZCI6MX0.s0_ADx2399sIajxHW_-LnQY7ftbVhH1qEFbRT60qNYA"], "id": "1"}
返回结果
成功验证后返回用户信息:
{ "jsonrpc": "2.0", "id": "1", "result": { "user_id": 1, "username": "admin", "nick_name": "超级管理员", "real_name": "超级管理员", "sex": 0, "phone": "", "avatar": "", "last_login_at": null, "created_at": "2019-11-04 15:16:18", "status": 1 }}
验证失败后返回错误信息:
{ "jsonrpc": "2.0", "id": "1", "error": { "code": -32000, "message": "Token未验证通过", "data": { "class": "Phper666\JwtAuth\Exception\TokenValidException", "message": "Token未验证通过" } }}
讨论
有些人可能会担心这个服务是公开的,是否可以被任何用户访问。答案是否定的。我们的服务部署在Docker私有网络中,外部是无法访问的。这些内容将在后续的教程中详细讲述。
发表评论
最新留言
表示我来过!
[***.240.166.169]2025年05月07日 08时25分58秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
PHP系列:PHP 基础编程 2(时间函数、数组---实现登录&注册&修改)
2023-01-23
PHP系列:使用PHP实现登录注册功能的完整指南
2023-01-23
"WARNING: Increasing RAM size to 1GB" and "Cannot set up guest memory 'xxx.ram': Invalid argument".
2023-01-23
04-docker-commit构建自定义镜像
2023-01-23
05-docker系列-使用dockerfile构建镜像
2023-01-23
09-docker系列-docker网络你了解多少(下)
2023-01-23
#C8# UVM中的factory机制 #S8.2.3# 重载sequence哪些情形
2023-01-24
cytoscape安装java_Cytoscape史上最全攻略
2023-01-24
c语言编写单片机中断,C语言AVR单片机中断程序写法
2023-01-24
java教学团队管理系统(ssm)
2023-01-24
java教师管理系统(ssm)
2023-01-24
java教师课堂助手app(ssm)
2023-01-24
java教育辅导班信息网(ssm)
2023-01-24
DDNS动态域名无固定IPSEC配置实战
2023-01-24
DELL笔记本UEFI+GPT安装window10与Ubuntu双系统
2023-01-24
EasyUi的使用与代码编写(一)
2023-01-24
Ehcache Java开源缓存框架
2023-01-24
el-select下拉框修改背景色
2023-01-24
ElasticSearch - 基于 JavaRestClient 操作索引库和文档
2023-01-24