bdunogier / xmlrpcbundle
Symfony 2 简单 XML RPC 服务器
2.0.3
2014-01-03 15:22 UTC
Requires
- php: >=5.3.3
- symfony/config: @dev
- symfony/dependency-injection: @dev
- symfony/event-dispatcher: @dev
- symfony/http-foundation: @dev
- symfony/http-kernel: @dev
- symfony/routing: @dev
Suggests
- ext-xmlrpc: *
README
原理
这个 Symfony 2 扩展包将让您无需离开您熟悉的 Symfony 2 环境即可实现 XML-RPC 服务器。
它执行以下操作
- 拦截对 XML-RPC 终端点的请求
- 将 XML 有效载荷转换为唯一的路由(基于方法调用)
- 将 XML 有效载荷转换为一系列原始参数(数组、散列、整数、字符串...)
使用示例
让我们考虑这个 XML-RPC 有效载荷
<methodCall> <methodName>myAPI.getLatestContent</methodName> <params> <param> <value>Some string</value> </param> </params> </methodCall>
要处理这个调用,您只需创建一个匹配 /xmlrpc/API.getLatestContent 的路由,并按常规方式将其映射到控制器即可
myroute.getLatestContent: path: /xmlrpc/myAPI.getLatestContent defaults: _controller: MyBundle:API:getLatestContent
就是这样。在您的控制器中,您将收到一个标准的 HttpFoundation 请求,其中每个参数都是 POST 数据的一部分。
可以在扩展包内部找到这个 hello world 示例。
参数提供者
默认情况下,路由不会接收任何参数,XML-RPC 请求的参数将作为 $_POST[0]、$_POST[1]、... 提供
为了获得更有意义的控制器,可以使用 ParametersProcessor
。
参数处理器必须
- 实现
BD\Bundle\XmlRpcBundle\XmlRpc\ParametersProcessorInterface
- 作为服务注册,标签为
bdxmlrpc.parameters_processor
,具有匹配 XML-RPC 方法的methodName
属性
该接口要求两个方法: getRoutePathArguments
和 getParameters
。这两个方法都将根据 $parameters
数组的内 容来细化请求参数,$parameters
是一个包含 XML-RPC 请求参数的数值数组。
ParametersProcessorInterface::getRoutePathArgument()
返回路由 URI 参数,作为一个数值索引的数组。每个参数都将添加到路由的路径中,由斜线分隔。
ParametersProcessorInterface::getParameters()
此方法必须返回一个数组,可以是关联的或非关联的,其中包含将添加到请求中的 POST 参数。