geggleto/slimgateway

0.0.1 2016-04-21 19:17 UTC

This package is auto-updated.

Last update: 2024-08-29 04:08:49 UTC


README

从你的日常工作中移除样板代码。需要简单的API将数据插入SQL表?这就是你需要的。

设置

  • 修改 config/db.env.php 的内容以连接到你的数据库
  • 为了定义你的资源
    • config/validators.php 中创建验证器
    • config/db.php 中创建网关和控制器条目
    • config/routes.php 中定义你的路由
    • 运行用户迁移 composer migrate:users

安装

`php composer.phar create-project geggleto/slimgateway [my-app-name]`

验证

对于验证有一个注意事项。验证仅在初始数据集上执行,通过中间件添加的内容将不可用于验证。

迁移

  • /migrations/ 文件夹中添加更多迁移
  • 添加一个composer命令来简化它们的运行
  • 确保在执行单元测试时也添加composer命令!

示例

config/db.php

$container['users.gateway'] = function ($c) {
    return new TableGateway('user', $c['adapter']);
};

$container['user.controller'] = function ($c) {
    return new EntityController($c['users.gateway']);
};

config/validators.php

$container['user.fetch.validator'] = function ($c) {
    /** @var $request \Slim\Http\Request */
    $request = $c['request'];
    $validator = new \Valitron\Validator($request->getParsedBody());
    $validator->rule('required', 'id');

    new \SlimGateway\ValidationMiddleware($validator);
};

$container['user.create.validator'] = function ($c) {
    /** @var $request \Slim\Http\Request */
    $request = $c['request'];
    $validator = new \Valitron\Validator($request->getParsedBody());
    $validator->rule('required', 'name');
    $validator->rule('required', 'email');
    $validator->rule('required', 'username');
    $validator->rule('required', 'password');

    new \SlimGateway\ValidationMiddleware($validator);
};

$container['user.update.validator'] = function ($c) {
    /** @var $request \Slim\Http\Request */
    $request = $c['request'];
    $validator = new \Valitron\Validator($request->getParsedBody());
    $validator->rule('required', 'name');
    $validator->rule('required', 'email');
    $validator->rule('required', 'username');

    new \SlimGateway\ValidationMiddleware($validator);
};

$container['user.delete.validator'] = function ($c) {
    /** @var $request \Slim\Http\Request */
    $request = $c['request'];
    $validator = new \Valitron\Validator($request->getParsedBody());
    $validator->rule('required', 'id');

    new \SlimGateway\ValidationMiddleware($validator);
};

config/routes.php

$app->get('/users/{id}', 'user.controller:fetch')->add('user.fetch.validator');
$app->post('/users', 'user.controller:create')->add('user.create.validator');
$app->put('/users/{id}', 'user.controller:update')->add('user.update.validator');
$app->delete('/users/{id}', 'user.controller:remove')->add('user.delete.validator');

单元测试

composer test

从这里走向何方

这是一个纯后端解决方案。下一步的逻辑可能是尝试发送电子邮件或加密用户密码。这两个功能在使用此包时都将是中间件。

中间件是运行在数据持久化前后代码的完美位置。