mg3lo/mysql-crud-api

MySql Crud Api 库

v1.0.0 2023-03-30 11:01 UTC

This package is auto-updated.

Last update: 2024-09-24 08:06:47 UTC


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

手动安装

要手动安装,请按照以下步骤操作

  1. 开发者工具 下载
  2. 将下载的文件解压缩到您的扩展目录中。

系统要求

  • PHP 7.0 或更高版本
  • MySQL 5.0 或更高版本

注意:已在以下版本上进行测试,但可能在较旧版本上也能工作。

PHP 用户

  1. 下载 安装样本 或通过 composer 安装

    composer require mg3lo/mysql-crud-api
  2. 在 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;
  3. 让库处理所有请求

    <?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();
  4. 享受吧!

Codeigniter 用户

  1. 解压缩 Codeigniter 3Codeigniter 4 的示例库,或通过 composer 安装

    composer require mg3lo/mysql-crud-api
  2. 创建路由以捕获所有发送到您的 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';
  3. 在控制器中加载库

    <?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;
  4. 让库处理所有请求

    <?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(); 
    	}
      }
  5. 享受吧!

Laravel 用户

  1. 根据文件夹结构通过 composer 安装或解压缩

    composer require mg3lo/mysql-crud-api
  2. 创建路由以捕获所有发送到您的 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.*');
  3. 在路由或控制器中加载库

    // load the library if you did not install it via composer
    require_once app_path('Mg3lo/vendor/autoload.php');
    use Mg3lo\MySqlCrudApi;
  4. 让库处理所有请求

    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.*');
  5. 享受吧!

其他 PHP 框架

  1. 下载 安装样本 或通过 composer 安装

    composer require mg3lo/mysql-crud-api
  2. 加载库

    <?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;
  3. 让库处理所有请求

    <?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();
  4. 享受吧!

检索记录

检索记录通常遵循以下 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;

?>