tatuco/api-base-laravel

API REST 项目基础。


README

安装

克隆仓库。命令

$ cd carpeta-del-proyecto
$ cp .env.example .env
$ php artisan key:generate

创建数据库并将名称放在环境变量 DB_DATABASE .env 中。运行命令

$ php artisan migrate --seed

获取API

测试端点 /api/

curl -X GET \
  http://127.0.0.1:8000/api/ \
  -H 'Content-Type: application/json' \

响应

{
    "version": "Laravel Components 5.7.*",
    "time": {
        "date": "2018-08-22 20:07:17.618814",
        "timezone_type": 3,
        "timezone": "UTC"
    }
}

创建模型,运行命令将创建控制器、迁移、服务、模型和该实体的存储库

$ php artisan generator:tatuco Entity all

验证

// al guardar
 protected $validateStore = [
        'name' => 'required|max:255',
        'description' => 'required',
    ];
  //al actualizar
   protected $validateUpdate = [
          'name' => 'required|max:255',
          'description' => 'required',
      ];  

前往 App/Core/TatucoController.php 以在以下属性中设置验证,适用于所有人

protected $validateDefault = [];

Do Where

doWhere 是通过 URL 传递给 API 的参数,目的是过滤来自客户端的查询,避免为每一件事创建无限制的端点。例如

/api/users?where=[{"op": "eq", "field": "id", "value": 1}]
  • 这相当于
 SELECT * FROM users WHERE id = 1;
  • 其中 op 代表操作符 (<, >, = ...),field 代表列,value 是我们想要获取的值。

操作符

  • 默认操作符是 "eq",我们也可以添加任意多的条件
 where=[{"op":"bt","field":"id","value":[1,3],"filter":"and"},{"op":"in","field":"id","value":[5,9],"filter":"or"},{"op":"eq","field":"id","value":4,"filter":"or"}]

SQL 语句翻译

 SELECT * FROM users WHERE id BETWEEN 1 AND 3 AND id IN (5, 9) OR id = 4;
  • 排序
   &order=["id","desc"]    
  • 关系
&join=[{"table":"users","fk":"role.user_id","pk":"users.id","type":"inner"}]
  • 指定列,默认为 ['*']
 &columns=["id as cedula", "name as Nombre"];
  • 日期过滤器:只需在 where 中添加 "type" 属性(date, year, month, day, time)即可
 /api/users?where=[{"op": "eq", "field": "date_created", "value": "2019-01-22", "type": "date"}]
 ```
### License

MIT License Luis.