uniondrug/service
Composer 安装命令:
composer create-project uniondrug/service
包简介
Uniondrug Micro Service Component for uniondrug/framework
关键字:
README 文档
README
Uniondrug微服务服务端和客户端的封装。基于HTTP的微服务报文格式形如:
{
"errno": "0",
"error": "",
"dataType": "OBJECT",
"data": {
"do2": {
"from": "do1"
},
"do3": {
"from": "do1"
}
}
}
通过封装后,在服务端,通过Server的系列方法直接产生上述格式的响应报文。在客户端,通过Client的方法,发起请求,对上述报文自动解析封装,方便使用。
安装
$ cd project-home
$ composer require uniondrug/service
修改 app.php 配置文件,注入服务。服务名称:服务端 serviceServer,客户端 serviceClient。
return [ 'default' => [ ...... 'providers' => [ ...... \Uniondrug\Service\ServiceServiceProvider::class, ], ], ];
客户端(Client)
使用方法
发起请求
方法:
delete(serviceName,route,query[],body[],extra[])get(serviceName,route,query[],body[],extra[])head(serviceName,route,query[],body[],extra[])options(serviceName,route,query[],body[],extra[])patch(serviceName,route,query[],body[],extra[])post(serviceName,route,query[],body[],extra[])put(serviceName,route,query[],body[],extra[])
说明:
serviceName服务名称,在注册中心注册的服务名称,发起请求时,会自动从注册中心查找该服务的节点。route是服务路由,通常就是应用服务的控制器路由。比如/member/info。query[]是数组格式的参数,如果有,则以QueryString的方式发送。body[]是数组格式的参数,如果有,默认以JSON的格式发送。如果想改变,则使用extra[]设定。extra[]是数组格式的参数,包括: --type:body的发送方式,模式是json,可选的有:form: 以form-url-encoded的方式发送;multipart:以form-data的方式发送。 --timeout: 发送请求的超时,单位秒 --connect_timeout: 连接节点的超时时间,单位秒 --headers: 数组,可选的头信息。
返回值
请求成功则返回一个Uniondrug\Service\RequestReader对象:
方法:
response()获得原始的Response对象。data()获得服务返回的结构化结果。也就是data里面的内容。headers()获得返回结果的头信息。getContents()获得返回的Body内容。getDuration()获得请求用的时间。hasError()返回结果是否有错(应用错误,而非Http请求的错误。Http请求出错,会抛出异常)。getErrno()获得错误代码getError()获得错误信息
举例:
public function postAction() { $serviceName = 'serviceName'; $route = '/route/action'; $query = ["page" => 1]; $body = ["userId" => 1, "options" => ["key" => "value"]]; $return = $this->serviceClient->post($serviceName, $route, $query, $body); print_r($return->data()); }
服务端
在服务端的控制器,使用Server封装产生指定格式的响应报文体。
使用方法
方法
Phalcon\Http\Response- withError(string$error,int$errno = 1)Phalcon\Http\Response- withStruct(Uniondrug\Structs\StructInterface$struct)
举例
public function postAction() { // codes ignored $this->serviceServer->withError("错误原因", 1); }
uniondrug/service 适用场景与选型建议
uniondrug/service 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 6.56k 次下载、GitHub Stars 达 0, 最近一次更新时间为 2017 年 11 月 07 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「phalcon」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 uniondrug/service 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 uniondrug/service 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 uniondrug/service 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Uniondrug Trace Client Component for uniondrug/framework
Библиотека для работы с BigQuery
A service layer implementation for Phalcon projects
Phalcon Model Generator
Phalcon extended framework. (Nucleon:App)
Web Debug bar and debugger for the Phalcon Framework
统计信息
- 总下载量: 6.56k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 1
- 点击次数: 0
- 依赖项目数: 2
- 推荐数: 0
其他信息
- 授权协议: proprietary
- 更新时间: 2017-11-07