volk / slim-json-api
Slim 扩展,用于实现快速 JSON API
4.0.0
2017-12-23 02:22 UTC
Requires
- php: >=7.0.0
- slim/slim: ~2.0
- voku/portable-utf8: ~5.0
Requires (Dev)
- phpunit/phpunit: ~6.0
README
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 中