volk/slim-json-api

Slim 扩展,用于实现快速 JSON API

4.0.0 2017-12-23 02:22 UTC

This package is auto-updated.

Last update: 2024-09-04 04:06:02 UTC


README

Build Status Coverage Status Scrutinizer Code Quality Latest Stable Version Total Downloads Latest Unstable Version License

slim-json-api

警告:这仅是 "https://github.com/entomb/slim-json-api" 的维护分支

这是 SLIM 框架的一个扩展,可以轻松实现 json API。

安装

使用 composer,您可以将以下内容添加到您的 composer.json 文件中

{
  "require": {
    "slim/slim": "2.*",
    "voku/slim-json-api": "2.*"
  }
}

用法

要包含中间件和视图,您只需使用默认的 Slim 方法加载它们。更多关于 Slim 的信息,请参阅这里 (https://github.com/codeguy/Slim#getting-started)

    require 'vendor/autoload.php';

    $app = new \Slim\Slim();

    $app->view(new \voku\slim\JsonApiView());
    $app->add(new \voku\slim\JsonApiMiddleware());

.htaccess 示例

以下是一个 .htaccess 示例,用于简单的 RESTful API

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L]

示例方法

所有请求都将返回 JSON 输出。用法为 $app->render((int)$HTTP_CODE, (array)$DATA);

示例代码

$app->get('/', function() use ($app) {
  $app->render(
      200,
      array(
          'msg' => 'welcome to my API!',
      )
  );
});

示例输出

{
  "msg":"welcome to my API!",
  "error":false,
  "status":200
}

错误

要显示错误,只需在您的数据数组中将 error => true 设置为 true。所有请求都将有一个默认为 false 的 error 参数。

$app->get('/user/:id', function($id) use ($app) {

  // your code here

  $app->render(
    404,
    array(
        'error' => TRUE,
        'msg'   => 'user not found',
    )
  );
});
{
  "msg":"user not found",
  "error":true,
  "status":404
}

您可以选择抛出异常,中间件将捕获所有异常并显示错误消息。

$app->get('/user/:id', function($id) use ($app) {

  // your code here

  if (...) {
    throw new Exception("Something wrong with your request!");
  }
});
{
  "error": true,
  "msg": "ERROR: Something wrong with your request!",
  "status": 500
}

将响应数据和元数据嵌入到单独的容器中

可以将响应元数据和业务信息分别放在不同的容器中。

要实现这一点,只需使用容器名称初始化 JsonApiView

require 'vendor/autoload.php';

$app = new \Slim\Slim();

$app->view(new \voku\slim\JsonApiView("data", "meta"));
$app->add(new \voku\slim\JsonApiMiddleware());

响应

{
  "data":{
    "msg":"welcome to my API!"
  },
  "meta":{
    "error":false,
    "status":200
  }
}

路由特定请求到 API

如果您的网站使用常规 HTML 响应,并且您只想在特定路由上公开 API 点,您可以使用 Slim 路由中间件来定义此操作。

function apiRequest() {
  $app = \Slim\Slim::getInstance();
  $app->view(new \voku\slim\JsonApiView());
  $app->add(new \voku\slim\JsonApiMiddleware());
}

$app->get('/home', function() use ($app){
  // regular html response
  $app->render("template.tpl");
});

$app->get('/api', 'apiRequest', function() use ($app){
  // this request will have full json responses

  $app->render(
    200,
    array(
        'msg' => 'welcome to my API!',
    )
  );
});

中间件

中间件将为默认请求设置一些静态路由。如果您 不想使用它,可以将其内容代码复制到您的启动文件中。

重要:请记住使用 $app->config('debug', false);,否则错误仍然会打印在 HTML 中