docnet/php-japi

PHP中构建HTTP JSON API的简单框架。2。

v2.0.0 2015-10-27 13:24 UTC

This package is not auto-updated.

Last update: 2024-09-24 06:11:22 UTC


README

Build Status Coverage Status

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)。

编码规范

希望遵循PSR-2。使用PSR-3日志记录。