ctechhindi / codeigniter-api
CodeIgniter API 控制器
Requires
- php: >=5.6
This package is not auto-updated.
Last update: 2024-09-19 17:34:19 UTC
README
此扩展由 Jeevan Lal
提供支持。
文件
\application\libraries\API_Controller.php
\application\helpers\api_helper.php
\application\config\api.php
\application\libraries\Authorization_Token.php
\application\config\jwt.php
- PHP-JWT 库
\application\third_party\php-jwt\
安装
您可以使用 composer 将此项目安装到您的计算机上。
安装 composer 包的推荐方法是
composer require ctechhindi/codeigniter-api:dev-master --prefer-source
要求
- PHP 5.4 或更高版本
- CodeIgniter 3.0+
注意:库在 CodeIgniter v3.8 和 PHP 5.6.8 中使用。
DEMO
简单 API
header("Access-Control-Allow-Origin: *"); // API Configuration $this->_apiConfig([ /** * By Default Request Method `GET` */ 'methods' => ['POST'], // 'GET', 'OPTIONS' /** * Number limit, type limit, time limit (last minute) */ 'limit' => [5, 'ip', 'everyday'], /** * type :: ['header', 'get', 'post'] * key :: ['table : Check Key in Database', 'key'] */ 'key' => ['POST', 'string_key' ], // type, {key}|table (by default) ]); // return data $this->api_return( [ 'status' => true, "result" => "Return API Response", ], 200);
文档
设置 API 请求方法
- 此函数默认请求方法为
GET
$this->_APIConfig();
- 设置
API 请求
方法POST, GET, ..
$this->_APIConfig([ 'methods' => ['POST', 'GET'], ]);
使用 API 限制
在使用 API 限制之前,我们需要加载 codeigniter 的 数据库库
。您也可以在 config/autoload.php
配置文件中加载数据库库。
在加载数据库库后,必须在数据库配置文件 config/database.php
中设置数据库。
在创建和设置数据库后,我们需要在数据库中创建一个名为 [api_limit]
的 API 限制表。如下所示。
CREATE TABLE `api_limit` ( `id` INT NOT NULL AUTO_INCREMENT , `user_id` INT NULL DEFAULT NULL , `uri` VARCHAR(200) NOT NULL , `class` VARCHAR(200) NOT NULL , `method` VARCHAR(200) NOT NULL , `ip_address` VARCHAR(50) NOT NULL , `time` TEXT NOT NULL , PRIMARY KEY (`id`) ) ENGINE = InnoDB;
API 限制的数据库表名称默认为 api_limit
。我们可以通过 API 配置文件 [config/api.php]
来更改它。如下所示。
/** * API Limit database table name */ $config['api_limit_table_name'] = 'api_limit'; /** * Set API Timezone */ $config['api_timezone'] = 'Asia/Kolkata';
现在我们可以使用 API 限制方法。
因此,此 API 在 5 分钟内只能运行 10 次。它是基于 IP 地址
。
/** * API Limit * ---------------------------------- * @param: {int} API limit Number * @param: {string} API limit Type (IP) * @param: {int} API limit Time [minute] */ $this->_APIConfig([ // number limit, type limit, time limit (last minute) 'limit' => [10, 'ip', 5] ]);
在 API 限制的 时间参数
中,我们也可以使用 每天
,这将遵循每天相同的 API 限制。在相同的 API 地址上
/** * API Limit * ---------------------------------- * @param: {int} API limit Number * @param: {string} API limit Type (IP) * @param: {string} API limit [everyday] */ $this->_APIConfig([ // number limit, type limit, everyday 'limit' => [10, 'ip', 'everyday'] ]);
不使用数据库使用 API 密钥
我们可以在请求头中设置 API 密钥。默认情况下,头名称为 X-API-K
,我们可以在 API 配置文件 [config/api.php]
中更改它。如下所示
/** * API Key Header Name */ $config['api_key_header_name'] = 'X-API-KEY';
在您的 API 控制器文件中使用此代码。
/** * Use API Key without Database * --------------------------------------------------------- * @param: {string} Types * @param: {string} API Key */ $this->_APIConfig([ 'key' => ['header', 'Set API Key'], ]);
使用数据库使用 API 密钥
我们还可以通过 数据库
来检查 API 密钥。为此,我们首先需要在 MySQL 中创建 api_keys
表。如下所示。
CREATE TABLE `api_keys` ( `id` INT NOT NULL AUTO_INCREMENT , `api_key` VARCHAR(50) NOT NULL , `controller` VARCHAR(50) NOT NULL , `date_created` DATE NULL DEFAULT NULL , `date_modified` DATE NULL DEFAULT NULL , PRIMARY KEY (`id`) ) ENGINE = InnoDB;
API 密钥的数据库表名称默认为 api_keys
。我们可以通过 API 配置文件 [config/api.php]
来更改它。如下所示。
/** * API Keys Database Table Name */ $config['api_keys_table_name'] = 'api_keys';
在 api_keys
数据库表中设置 API 密钥,并在您的 API 控制器文件中使用此代码。
/** * API Key * --------------------------------------------------------- * @param: {string} Types * @param: {string} [table] */ $this->_APIConfig([ // 'key' => ['header', 'table'], 'key' => ['header'], ]);
在 API 密钥中使用自定义函数
/** * API Key * --------------------------------------------------------- * @param: {string} Types * @param: [function] return api key */ $this->_APIConfig([ 'key' => ['header', $this->key() ], ]); // This is Custom function and return api key private function key() { return 1452; }
在 API 响应中添加自定义数据
在 API 的响应中,我们还可以添加类似这样的自定义数据。
$this->_APIConfig([ 'key' => ['header'], 'data' => [ 'is_login' => false ] // custom data ]);
API 输出 :
{ "status": false, "error": "API Key Header Required", "is_login": false }
API 返回数据
此方法用于将数据返回给 api,其中响应数据是 first
和 second
请求状态码。
/** * Return API Response * --------------------------------------------------------- * @param: API Data * @param: Request Status Code */ $this->api_return(data, status_code);
请求状态码列表
在 API 密钥中使用配置文件
- 创建配置文件
\application\config\api_keys.php
- 在 API 控制器中如下使用
// load API Keys config file $this->load->config('api_keys'); $this->_APIConfig([ 'key' => ['post', $this->config->item('controller/api key name')], ]);
问题报告
如果您对此插件有问题或发现任何错误,请在 GitHub 上提交问题。
许可
CodeIgniter API 控制器受 MIT 许可。