gggeek / ggwebservices

增强/改进了eZ Publish的本地功能,使其能够作为web服务服务器或客户端工作,并额外提供了一个可视化的web服务调试器。

安装次数: 2,660

依赖: 0

建议者: 0

安全性: 0

星标: 5

关注者: 2

分支: 9

开放问题: 0

语言:JavaScript

类型:ezpublish-legacy-extension

0.14.5 2022-02-03 18:00 UTC

This package is auto-updated.

Last update: 2024-08-29 05:04:20 UTC


README

一个扩展,用于增强/改进eZ Publish的本地功能,使其可以作为

  • web服务服务器
  • web服务客户端

并提供一个可视化的web服务调试器

功能

允许轻松使用JSONRPC、XMLRPC和SOAP协议或REST方案调用远程服务器(无论是PHP代码还是模板中)

允许将现有功能作为JSONRPC或XMLRPC、REST和(比eZ本地更好的)SOAP web服务公开,类似于在任意eZ Publish安装中已可以使用SOAP和eZJSCore完成的工作

允许将功能作为web服务公开,而不管客户端使用的协议是什么 - 无需重复代码

提供一个代理模块,允许由eZ Publish服务器提供的javascript代码执行跨域web服务调用(无需使用jsonp或html技巧),甚至跨协议调用

通过提供完整的图形界面进行调试,允许轻松调试web服务调用

在SOAP调用中增加了对WSDL的支持(服务器端和客户端)

改进现有的http客户端,增加更多功能,例如支持更多的身份验证方案、压缩请求等...

允许使用JSONRPC或XMLRPC(最终可能是SOAP)通过ezjscore扩展API调用的函数

保持与现有eZP SOAP类的相同API,以实现最大互操作性

还有更多...

先决条件

  • PHP 5 / eZP 4.0+
  • 要执行/接收jsonrpc调用,需要php JSON扩展
  • 要执行/接收rest调用,需要php SIMPLEXML或JSON扩展
  • 要执行/接收xmlrpc调用,需要php XMLRPC扩展
  • 要使用wsdl描述调用远程服务,需要php SOAP扩展
  • 要集成ezjscore扩展,需要eZP 4.2(以及当然ezjscore扩展)
  • 要使用集成的javascript库通过ajax调用服务器本身,建议使用ezjscore扩展。任何其他xmlrpc/jsorpc的javascript库也可以。
  • 要从通过标准会话机制(如ajax调用)认证的用户接收soap/xmlrpc/jsonrpc/rest+post调用,必须禁用ezformtoken扩展

基础知识

服务器(eZPublish公开web服务)

  • 要接收xmlrpc、jsonrpc或'rest'调用,您需要
    1. 修改wsproviders.ini中的配置,以及可能修改site.ini.append.php
    2. 创建一个文件extension/<xxx>/<jsonrpc|xmlrpc|rest>/initialize.php,其中包含要作为web服务公开的PHP代码
    3. 通过管理界面和/或配置设置管理对公开服务的访问控制

客户端(eZPublish访问由其他系统公开的web服务)

  • 每个必须从eZ Publish服务器本身访问的远程web服务服务器都必须在wsproviders.ini中定义
  • 要从模板中调用远程web服务,请使用模板获取函数fetch( 'webservices', 'call', hash( paramname, value, ... ) ) 请记住,对于执行web服务调用的节点模板,在需要的地方禁用视图缓存
  • 要从PHP代码中调用远程web服务,请使用ggeZWebServicesClient::call( $server, $metod, $params=array(), $options=array() );

有关扩展的更多使用信息,请参阅doc/目录。

已知限制

  • 对WSDL的支持有限,对SOAP 1.2的支持也是如此
  • JSON-RPC 支持(仅限)1.0 版本,不支持 2.0 版本。
  • WebSocket 客户端不支持自动 cookie 管理。
  • WebSocket 客户端不支持 OAuth 认证。
  • 代理视图通过暴露 xmlrpc+jsonrpc API 来工作。这意味着它不能用来模拟 SOAP/REST 调用的丰富语义。例如,目前它不能用来向上游 REST Web 服务发送 POST 调用。
  • REST 支持并不完美,因为该扩展是基于 RPC 语义(调用一个 方法,该方法接收一个 参数哈希)。目前
    • 对于 REST 客户端,参数将被转换为查询字符串或 HTTP 请求有效负载,而不是 URL 的斜杠分隔部分。
    • 对于 REST 服务器,不支持斜杠分隔的参数或复杂的路由规则。
  • 还有很多其他方面:阅读 doc/todo 获取可能改进的详细列表。

常见问题解答(FAQ)

问题:我如何在不发疯的情况下调试 Web 服务?

答案1:你真幸运,因为这个扩展在标准管理界面中提供了一个很好的图形调试器。

答案2:当 DebugSettings/DebugOutput 和 TemplateSettings/DevelopmentMode 都被启用时,fetch 函数发送的请求将作为标准调试输出的一部分显示。

答案3:通过启用日志记录!wsproviders.ini 中有一个 ini 设置用于控制用于 Web 服务的日志文件的详细程度:var//log/webservices.log

问题:这个扩展的安全性如何?

答案:主要作者以自己是一个极其注重安全的开发者而自豪——他在臭名昭著的“lupii 蠕虫”事件中学到了很多关于 Web 服务和安全的东西,后来甚至短暂地担任过安全顾问。话虽如此,代码库现在已经相当大,提供的功能数量令人惊叹。没有任何保证,无论是隐含的还是明确的,使用它不会将您的数据或客户的数据暴露给欺诈行为。如果您对此有问题,请赞助一个安全审计。