docnet / php-japi
PHP中构建HTTP JSON API的简单框架。2。
v2.0.0
2015-10-27 13:24 UTC
Requires
- php: >=5.4.0
- psr/log: ~1.0
Requires (Dev)
- phpunit/phpunit: ~4.0
- satooshi/php-coveralls: dev-master
This package is not auto-updated.
Last update: 2024-09-24 06:11:22 UTC
README
PHP JSON API库
我们用于在PHP中构建HTTP JSON API的库的第2版。
第2版的一些主要更改
- 采用更好的代码实践,支持依赖注入
- 采用我们新的“单一责任控制器”方法
- 将路由器从JAPI容器中解耦
- 使用PSR日志记录
- 采用PHP 5.4最低版本
随着我们在Docnet扩展面向服务的架构(SOA),我们越来越多地使用这个库 - 因此希望对其他人也有用 ;)
尽可能使用HTTP状态码来传递成功/失败等信息给客户端。
单一责任控制器
在2.0版中,我们采用了对路由和控制器复杂性的新方法。因此,在之前,您可能在这个类上有多个操作(方法),如下所示:
BasketController::fetchDetailAction()
BasketController::addAction()
BasketController::removeAction()
BasketController::emptyAction()
现在这将是4个命名空间类,如下所示:
Basket\FetchDetail
Basket\Add
Basket\Remove
Basket\Empty
这允许
- 更高的代码模块化
- 更小的类
- 通过
__construct()
实现依赖注入,每个“操作”都是自己的类,从而变得更容易。
您仍然可以通过扩展/组合共享公共代码 - 随您的喜好!
JAPI将调用您的控制器上的dispatch()
方法。
静态路由
捆绑的路由器可以接受任何深度的控制器命名空间,如下所示:
/one
=>One
/one/two
=>One\Two
/one/two/three
=>One\Two\Three
当您构建路由器时,您可以给它一个“根”命名空间,如下所示:
$router = new \Docnet\JAPI\SolidRouter('\\Docnet\\App\\Controller\\');
这将导致以下路由:
/one/two
=>\Docnet\App\Controller\One\Two
静态路由
如果您有一些需要设置的静态路由,这没问题 - 它们也绕过了路由正则表达式代码,因此使调用稍微更快。
添加单个自定义路由
$router = new \Docnet\JAPI\SolidRouter(); $router->addRoute('/hello', '\\Some\\Controller');
或设置多个它们
$router = new \Docnet\JAPI\SolidRouter(); $router->setRoutes([ '/hello' => '\\Some\\Controller', '/world' => '\\Other\\Controller' ]);
安装
以下是Composer用户的require行(在2系列开发期间)...
"docnet/php-japi": "2.0.*@dev"
...或者只需下载并使用src文件夹。
引导
假设...
- 您已经将Apache/任何内容设置为将所有请求路由到该文件
- 存在自动加载器(如此处所示的Composer示例)或您已包含所有必要的文件
...那么在您的index.php
中,您可能只需要像这样的代码:
(new \Docnet\JAPI())->bootstrap(function(){ $obj_router = new \Docnet\JAPI\SolidRouter(); $obj_router->route(); $str_controller = $obj_router->getController(); return new $str_controller(); });
请参阅示例文件夹以获取工作示例(api.php)。