rocker / server
帮助您在Slim框架(https://github.com/victorjonsson/PHP-Rocker#php-rocker)上编写RESTful Web服务的样板代码
Requires
- php: >=5.3.2
- fridge/dbal: dev-master
- gregwar/image: dev-master
- guzzle/http: 3.3.1.0
- jlogsdon/cli: dev-master
- slim/slim: 2.*
Requires (Dev)
- phpbenchmark/phpbenchmark: dev-master
- phpunit/phpunit: >=3.7.1
README
又是一个PHP编写RESTful Web服务的框架!这个框架与众不同的地方在于PHP-Rocker是Slim(https://github.com/codeguy/Slim)和优秀的数据库外观的集合。不需要从头开始编写一切,这使得您在编写RESTful API时可以专注于重要的事情,让其他项目处理诸如路由和数据存储等问题。
功能
- 用户管理
- CRUD操作 使用PHP-Rocker中的基础类扩展API,添加自己的对象和操作
- EAV数据模型
- 静态文件存储 支持图像处理和存储在Amazon S3
- 内置对象缓存 支持APC和基于文件的缓存
- 基于接口的 易于扩展和定制
- 通过控制台管理远程服务器
- 自动生成文档 从类文件中提取所有信息,这意味着您只需编写一次文档
阅读更多
附加包
- Facebook登录 将PHP-Rocker服务器与Facebook集成
- Google登录 启用使用Google用户凭据进行认证的请求
系统要求
- PHP v >= 5.3.2
- MySQL 数据库层支持多种不同的数据库(oracle、mssql、postgresql...),但PHP-Rocker目前仅与MySQL进行了测试
- Web服务器(apache/nginx) 如果使用nginx,则需要将.htaccess重写规则移动到服务器的重写配置中
安装
1) 在您的应用程序目录中添加文件composer.json,以下json配置(请注意,您必须允许开发包)
{
"minimum-stability": "dev",
"require" : {
"rocker/server": "1.2.6"
}
}
2) 在您的应用程序目录中运行composer install。这将安装Slim以及PHP-Rocker所依赖的所有其他包。
$ composer install
3) 在您的应用程序目录中运行vendor/rocker/server/install.php
$ php -f vendor/rocker/server/install.php
- 完成了!
API参考
API参考已移动到其自己的wiki页面。
通过更多操作扩展API
在这里您可以了解更多关于如何创建自定义操作
添加自己的对象
在这里您可以了解更多关于如何添加自己的对象
通过命令行管理远程服务器
首先,将控制台程序移动到您的bin目录,以便您可以从任何位置访问它。
$ sudo ln -s /path/to/your/rocker/installation/console /bin/rocker
完成此操作后,添加您的服务器(您将被提示输入服务器地址和用户凭据)
$ rocker server
搜索用户
# Find users with nick containing John
$ rocker users -q 'nick=*John*'
# Find users coming from either France or Germany that is not admin
$ rocker users -q 'country=France|Germany&admin!=1'
# Find users that has a score greater than 80 and that has a description
# containing either "hockey" or "soccer"
$ rocker users -q 'score>=80&description=*hockey*|*soccer*'
加载用户数据
$ rocker users -l john.doe@website.com
您还可以使用控制台程序创建、删除和更新用户。在控制台运行 rocker
获取更多帮助。
关于安全性的说明
PHP-Rocker 默认支持基本认证和 RC4 加密认证。在处理业务/用户数据时,始终应在 SSL 证书上运行您的 Web 服务,尤其是在使用基本认证时。RC4 加密认证的工作原理与基本认证基本相同,不同之处在于用户凭据在客户端加密,在服务器端使用共享密钥解密。如果您想运行 RC4 加密请求,则需要修改 config.php 中的 application.auth
参数。
'application.auth' => array(
'class' => '\\Rocker\\REST\\Authenticator',
'mechanism' => 'RC4 realm="your.service.com"',
'secret' => 'what-ever-hard-to-guess-string-you-want'
)
该 密钥 还需要提供给与您的 Rocker 服务器通信的客户端。伪代码
String crypted = RC4.encrypt("the-hard-to-guess-secret", "som.user@gmail.com:some-password"); request.addHeader("Authorization", "RC4 " + Base64.encode(crypted));
其他认证包
- Facebook登录 将PHP-Rocker服务器与Facebook集成
- Google登录 启用使用Google用户凭据进行认证的请求
自动生成文档
文档是从 config.php
中定义的操作类自动生成的。类文档、操作的 URI 和允许的请求方法将被添加到生成的文档中。查看 index.php 了解如何将文档添加到 Slim 的路由系统中,您也可以将其更改为您自己的模板。
<?php
/**
* This text will extracted to the documentation, as well as @link declarations
*
* @link http://...
*/
class MyOperation extends \Rocker\REST\AbstractOperation {
单元测试和验收测试
要运行 Rocker 的单元测试,请导航到 libs/Test 并运行 phpunit。您还可以使用 dokimon 测试 在您的整个基础设施上运行验收测试
许可证
路线图
支持在 Amazon S3 上存储文件- 将认证方法编写为 Slim 中间件
使能够使用 PUT 存储blob数据- 考虑使用另一种数据模型存储对象(可能支持 NoSQL)
添加对 XML 格式响应的支持- 将控制台程序重写为 phar 并将源代码移动到单独的项目
变更日志
1.3.0(未发布)
- 自动生成文档
1.2.6
- 客户端现在可以通过在 URI 中添加 .json 或 .xml 来确定服务器响应的内容类型
1.2.0
- 通用改进和较小的错误修复
- 简化安装过程
1.1.8
- 尝试更新一个已经注册的电子邮件地址的用户现在将导致 http 状态
409 而不是 400 - 抽象对象工厂现在实现了 InstallableInterface
- 改进了安装脚本,所有应该在应用程序安装时运行安装的类现在都声明在 config.php 中
- 添加了用户管理和文件存储的配置选项
- Access-Allow-Headers 仅在请求方法为 OPTIONS 时发送
- 改进了在调用 AbstractObjectFactory::metaSearch() 时执行的数据库查询
- 现在支持 XML 内容类型
- 改进了显示可用服务器的控制台方法
1.1.7
- 在 PHP-Rocker\Object\ObjectMetaFactory 中进行了通用改进
- 修复了导致代码遍历 null 变量的错误
- 使用 Gregwar/Image 替换了图像处理逻辑
- 修复了有时导致控制台程序崩溃的错误
1.1.6
- 添加了对文件存储的支持
- 添加了图像处理功能