mg3lo / mysql-crud-api
MySql Crud Api 库
Requires
- mg3lo/mysql-crud: ^1.0
README
MySql Crud Api 是一个即插即用的 PHP 库,用于通过 RESTful API 调用自动构建 MySql 数据库的 CRUD 功能。此库依赖于 Mysql Crud Library,这是一个类似的即插即用 PHP 库,类似于查询构建器和 Eloquent ORM,但功能更加强大。
简单总结
C-reate POST http://your-website.com/{route}/{database-table-name}
R-ead GET http://your-website.com/{route}/{database-table-name}/{id}/{related-table-name}/{id}?{parameter}={value}
U-pdate PUT|PATCH http://your-website.com/{route}/{database-table-name}/{id}
D-elete DELETE http://your-website.com/{route}/{database-table-name}/{id}
目录
安装
要安装此项目,您有两个选择
通过 Composer 安装
要使用 Composer 安装,请运行以下命令
composer require mg3lo/mysql-crud-api
手动安装
要手动安装,请按照以下步骤操作
系统要求
- PHP 7.0 或更高版本
- MySQL 5.0 或更高版本
注意:已在以下版本上进行测试,但可能在较旧版本上也能工作。
PHP 用户
-
下载 安装样本 或通过 composer 安装
composer require mg3lo/mysql-crud-api
-
在 php 文件中加载库
<?php // Load library installed via composer require_once './vendor/autoload.php'; // Or load library installed manually require_once './Mg3lo/vendor/autoload.php'; use Mg3lo\MySqlCrudApi;
-
让库处理所有请求
<?php require_once './vendor/autoload.php'; use Mg3lo\MySqlCrudApi; // connect to your database $api = new MySqlCrudApi([ 'username' => 'root', 'password' => '', 'database' => 'my_database' ]); // manage all calls $api->manage();
-
享受吧!
Codeigniter 用户
-
解压缩 Codeigniter 3 或 Codeigniter 4 的示例库,或通过 composer 安装
composer require mg3lo/mysql-crud-api
-
创建路由以捕获所有发送到您的 crud url 的请求,例如 http://your-website/crud/{anything-goes}
$route['crud/(:any)'] = 'crud'; $route['crud/(:any)/(:any)'] = 'crud'; $route['crud/(:any)/(:any)/(:any)'] = 'crud'; $route['crud/(:any)/(:any)/(:any)/(:any)'] = 'crud';
-
在控制器中加载库
<?php // Load library installed via composer require_once FCPATH . 'vendor/autoload.php'; // Or load library installed manually require_once APPPATH . 'third_party/Mg3lo/vendor/autoload.php'; use Mg3lo\MySqlCrudApi;
-
让库处理所有请求
<?php require_once APPPATH . 'third_party/Mg3lo/vendor/autoload.php'; use Mg3lo\MySqlCrudApi; class Crud extends CI_Controller { public function index() { // connect to your mysql database $api = new MySqlCrudApi([ 'username' => 'root', 'password' => '', 'database' => 'my_database' ]); // let the library manage all api calls $api->manage(); } }
-
享受吧!
Laravel 用户
-
根据文件夹结构通过 composer 安装或解压缩 库
composer require mg3lo/mysql-crud-api
-
创建路由以捕获所有发送到您的 crud url 的请求,例如 http://your-website/crud/{anything-goes}
Route::any('{crud}', function ($any) { // Catches all routes from crud, may vary depending on your laravel version })->where('crud', '.*crud.*');
-
在路由或控制器中加载库
// load the library if you did not install it via composer require_once app_path('Mg3lo/vendor/autoload.php'); use Mg3lo\MySqlCrudApi;
-
让库处理所有请求
use Mg3lo\MySqlCrudApi; // connect to your mysql database $api = new MySqlCrudApi([ 'host' => env(DB_HOST), 'username' => env(DB_USERNAME), 'password' => env(DB_PASSWORD), 'database' => env(DB_DATABASE), ]); Route::any('{crud}', function ($any) use ($api) { // let the library manage all api calls $api->manage(); })->where('crud', '.*crud.*');
-
享受吧!
其他 PHP 框架
-
下载 安装样本 或通过 composer 安装
composer require mg3lo/mysql-crud-api
-
加载库
<?php // Load library installed via composer require_once './vendor/autoload.php'; // Or load library installed manually require_once '.Your_Directory/Mg3lo/vendor/autoload.php'; use Mg3lo\MySqlCrudApi;
-
让库处理所有请求
<?php require_once './vendor/autoload.php'; use Mg3lo\MySqlCrudApi; // connect to your database $api = new MySqlCrudApi([ 'username' => 'root', 'password' => '', 'database' => 'my_database' ]); // manage all calls $api->manage();
-
享受吧!
检索记录
检索记录通常遵循以下 URL 格式。
GET http://your-website.com/{route}/{database-table-name}/{id}/{related-table-name}/{id}?{parameter}={value}
所有记录
检索产品表中的所有记录
http://your-website.com/crud/products
单个记录
从产品表中检索 ID 为 1 的记录
http://your-website.com/crud/products/1
筛选记录
检索当前处于活动状态的产品
http://your-website.com/crud/products?status=active
子记录
检索属于类别 1 的产品
http://your-website.com/crud/categories/1/products
相关记录
检索类别及其对应的产品
http://your-website.com/crud/categories?with=products
搜索记录
我们可以搜索记录并搜索特定列
http://your-website.com/crud/products?search=iphone
http://your-website.com/crud/products?search=iphone&search-fields=name,description
http://your-website.com/crud/products?search=iphone&search-fields[0]=name&search-fields[1]=description
参数
使用查询参数可以进一步改进我们的筛选器。
API 密钥
使用 API 密钥保护您的数据。
http://your-website.com/crud/products?api-key=YourApiKey
限制和偏移量
使用限制和偏移量限制检索的记录并创建分页
限制
检索前100条记录
http://your-website.com/crud/products?limit=100
偏移量
检索101到200条记录
http://your-website.com/crud/products?limit=100&offset=100
排序和顺序
根据您的喜好排序和排列记录
排序
按数据库名称列排序记录
http://your-website.com/crud/products?sort=price
排序方式
按升序或降序排列记录
http://your-website.com/crud/products?sort=price&order=asc
封装
默认情况下,记录会以信封形式返回,您可以通过传递true或false来关闭此功能
http://your-website.com/crud/products?envelop=false
大小写
默认情况下,记录以下划线格式返回。您可以通过传递以下任何一项来更改它们:(下划线、帕斯卡、驼峰、破折号)
http://your-website.com/crud/products?case=camel
格式
默认情况下,库返回JSON作为响应,您可以将它更改为(csv、xml、json或jsonp)
http://your-website.com/crud/products?format=xml
创建记录
创建记录通常遵循以下URL格式。
POST http://your-website.com/{route}/{database-table-name}
创建单个记录
我们可以通过向URL发送数据来添加记录
http://your-website.com/crud/products
POST数据
[
'name' => 'iPhone',
'description' => 'Cellphone',
'price' => '999',
]
创建多个记录
我们还可以从同一URL添加多个记录
http://your-website.com/crud/products
POST数据
[
[
'name' => 'iPhone',
'description' => 'Cellphone',
'price' => '999',
],
[
'name' => 'iPhone',
'description' => 'Cellphone',
'price' => '999',
]
]
更新记录
更新记录通常遵循以下URL格式。
PUT|PATCH http://your-website.com/{route}/{database-table-name}/{id}
更新单个记录
我们可以通过ID URL更新记录
PUT|PATCH http://your-website.com/crud/products/1
PUT或PATCH数据
[
'name' => 'iPhone',
'description' => 'New Description',
'price' => '799',
]
更新多个记录
我们可以更新多个记录
PUT|PATCH http://your-website.com/crud/products
PUT或PATCH数据
[
[
'id' => 1,
'name' => 'iPhone',
'description' => 'Cellphone',
'price' => '999',
],
[
'id' => 2,
'name' => 'iPhone',
'description' => 'Cellphone',
'price' => '999',
]
]
注意:我们还可以使用POST来更新记录,只需在POST _method上传递方法覆盖即可
POST http://your-website.com/crud/products/1
POST数据
[
'name' => 'iPhone',
'description' => 'New Description',
'price' => '799',
_method => "put" // methhod ovverride
]
删除记录
更新记录通常遵循以下URL格式。
DELETE http://your-website.com/{route}/{database-table-name}/{id}
删除多个记录
要删除多个文件,我们传递它们的ID
DELETE http://your-website.com/{route}/{database-table-name}/{id}
DELETE数据
[
ids = [1,2,3]
]
配置文件
您的配置文件位于Mg3lo\src\config\MySqlCrudApi.php,请确保所有配置都是正确的。
<?php /* |-------------------------------------------------------------------------- | Timezone |-------------------------------------------------------------------------- | | PHP 5 and lower requires timezone to be set | */ $config['timezone'] = 'UTC'; /* |-------------------------------------------------------------------------- | API Secret Key |-------------------------------------------------------------------------- | | Although you can set an api key to secure your API | We suggest implementing your own security on top of it | */ $config['api_key'] = ''; /* |-------------------------------------------------------------------------- | URL Segment |-------------------------------------------------------------------------- | | In which url segment do tables be retrieved | http://yourwebsite/api/table | | 0 = yourwebsite | 1 = api | 2 = table | */ $config['url_segment'] = 2; /* |-------------------------------------------------------------------------- | API Default Case |-------------------------------------------------------------------------- | | Default API response will be of case underscore or snake. | Values can be camel, dash, pascal, snake or underscore | */ $config['case'] = 'underscore'; /* |-------------------------------------------------------------------------- | Database tables |-------------------------------------------------------------------------- | | Database table names are named plural or singular | */ $config['db_table_names'] = 'plural'; /* |-------------------------------------------------------------------------- | API Envelop |-------------------------------------------------------------------------- | | If set to true API's response will contain status, code, message, date and count | Otherwise if set to false response will contain pure data only | */ $config['envelop'] = TRUE; /* |-------------------------------------------------------------------------- | API Wrapper |-------------------------------------------------------------------------- | | If supplied data will be wrapped around the value | */ $config['wrapper'] = ''; /* |-------------------------------------------------------------------------- | API Default Delimeter |-------------------------------------------------------------------------- | | Default delimiter for csv response | */ $config['delimiter'] = ','; /* |-------------------------------------------------------------------------- | API Force Array |-------------------------------------------------------------------------- | | Forces the response to be array for single records | */ $config['force_array'] = FALSE; /* |-------------------------------------------------------------------------- | API Default Response Format |-------------------------------------------------------------------------- | | API's default response format | */ $config['format'] = 'json'; /* |-------------------------------------------------------------------------- | Uploads Directory |-------------------------------------------------------------------------- | | Uploads root directory | */ $config['uploads'] = 'uploads'; /* |-------------------------------------------------------------------------- | Uploads folder name |-------------------------------------------------------------------------- | | uploads/directory | sub folder for api uploads | */ $config['api_uploads'] = 'mysqlcrudapi'; /* |-------------------------------------------------------------------------- | Allowed file upload types |-------------------------------------------------------------------------- | | To enable all use * | For specific types use | to separate values e.g. jpg|doc|txt | */ $config['allowed_files'] = '*'; /* |-------------------------------------------------------------------------- | Language File |-------------------------------------------------------------------------- | | Overwrite texts here | or pass it as second parameter on the constructor | $api = new MysqlCrudApi($config, $language); | */ $config['language'] = [ 'success' => 'Success', 'failed' => 'Failed', 'error' => 'error', 'status' => 'status', 'code' => 'code', 'message' => 'message', 'fetch_date' => 'fetch_date', 'errors' => 'errors', 'response' => 'Response', 'add_successful' => 'Add successful', 'edit_successful' => 'Edit successful', 'delete_successful' => 'Delete successful', 'count_' => 'count_', 'total_' => 'total_', 'file_too_large' => 'File too large', 'invalid_api_key' => 'Invalid api key', 'not_found' => 'Not found', 'invalid_parameters' => 'Invalid parameters', 'unsupported_file' => 'Unsupported file type', 'no_update_parameter' => 'Please send at least one parameter to update', 'no_delete_parameter' => 'No parameter for delete', 'unable_csv' => 'Unable to convert nested multi-dimensional array to csv' ]; return $config; ?>