chalarangelo / codeigniter-rap
CodeIgniter框架的简单RESTful API模板
Requires
- php: >=5.3.7
This package is not auto-updated.
Last update: 2024-09-24 16:36:20 UTC
README
CodeIgniter框架的简单RESTful API模板。
composer create-project chalarangelo/codeigniter-rap
简介
CodeIgniter RESTful API是一组简单、模块化的辅助工具,可以轻松集成到您的CodeIgniter项目中,让您创建满足所有需求的定制RESTful API。该软件包包括用于数据库操作、JSON Web Token生成、验证和签名、认证方法、使用URI访问资源的方法的辅助工具,以及一些有助于简化您工作流程的实用方法。
要求
- PHP:5.3.7或更高版本
- CodeIgniter:3.1.5或更高版本
安装
- 将application文件夹中的所有文件复制并粘贴到您的应用程序中的相应目录。
- 将
config.example.ini
文件复制到您的应用程序文件夹外,或根据示例创建自己的配置文件。请记住将您的文件重命名为config.ini
或重命名提供的示例。 - 创建自己的密钥并更新
config.ini
以确保完全安全。 - (可选) 复制并粘贴
.example.htaccess
文件并根据需要调整。请记住将其重命名为.htaccess
。 - (推荐) 启用服务器HTTPS以实现最大安全性。
内容
API由一组辅助工具组成,每个工具都服务于不同的目的。单击下面的每个辅助工具以了解其功能。
error_code
包含各种错误代码的值。这些代码大多数与HTTP状态代码匹配,但其中一些可能不是完美的匹配。错误代码存储为全局变量。
request
包含一个用于检索当前请求主体的方法。
get_request_body()
:检索当前请求的主体。- 返回当前请求的主体
database
包含多个连接数据库和检索信息的辅助工具。
database_connect()
:建立与数据库的连接。连接的参数(主机、用户名、密码和数据库名称)从位于CodeIgniter根文件夹的config.ini
文件中解析。- 返回数据库连接
database_query($query, $types, $params, $query_type)
:使用预编译语句查询数据库,根据查询结果返回关联数组或false。$query
:要查询的数据库查询,作为字符串。$types
:包含一个或多个字符的字符串,指定对应绑定变量的类型。$params
:将作为参数传递给查询的值数组。参数的类型必须与$types
中指定的类型匹配。$query_type
:(可选) 要执行的查询类型(“SELECT”(默认),“INSERT”,“UPDATE”,“DELETE”)。根据指定的类型,预编译语句的执行将返回不同类型的结果。- 返回关联数组或false
database_no_args_query($query)
:- 查询数据库,根据查询结果返回关联数组或false。查询必须没有参数(例如,用于从表中检索所有值)。
$query
:要查询的数据库查询,作为字符串。- 返回关联数组或false
database_error()
:返回最后一个连接错误(如果有)。- 返回错误描述
jwt
基于此实现,JWT辅助器允许创建JSON Web Tokens。在config.ini
中提供的密钥将用于签名令牌。
jwt_encode($payload, $key, $algo)
:创建JWT字符串。$payload
:JSON Web Token的有效负载。$key
:密钥$algo
:(可选)签名算法('HS256'(默认值),'HS384'或'HS512')。- 返回已签名的JWT
jwt_decode($jwt, $key, $verify)
:解码JWT字符串。$jwt
:JSON Web Token。$key
:密钥。$verify
:(可选)切换令牌的验证开关。- 返回JWT的有效负载
sign($msg, $key, $method)
:使用给定的密钥和算法对字符串进行签名。$msg
:要签名的消息。$key
:密钥。$algo
:(可选)签名算法('HS256'(默认值),'HS384'或'HS512')。- 返回加密消息
json_e_encode($input)
:编码成JSON字符串(带有错误处理)。$input
:要编码的对象。- 返回对象的JSON表示
json_e_decode($input)
:解码JSON字符串(带有错误处理)。$input
:要解码的JSON字符串。- 返回JSON字符串的对象表示
urlsafe_base64_encode($input)
:使用URL安全的Base64编码字符串。$input
:要编码的字符串。- 返回Base64编码的字符串
urlsafe_base64_decode($input)
:使用URL安全的Base64解码字符串。$input
:要解码的Base64字符串。- 返回解码后的字符串
auth
包含多个用于授权、授权验证以及在cookies中使用JSON Web Tokens的方法。
authorize($table, $fields, $username_field, $password_field, $id_field, $username_value, $password_value, $service_name, $cookie_name)
:根据提供的凭据,使用数据库查询为用户提供系统授权访问。如果授权成功,将生成唯一的JSON Web Token并存储在cookie中。$table
:要查询的数据库表。$fields
:要请求的字段名称数组。$username_field
:用户名字段名称。$password_field
:密码字段名称。$id_field
:ID字段名称。$username_value
:用户名字段值。$password_value
:密码字段值。$service_name
:服务名称。$cookie_name
:用于存储授权令牌的cookie名称。- 返回关联数组
generate_jwt_cookie($username_value, $id_value, $service_name, $cookie_name)
:从提供的值生成唯一的JSON Web Token。$username_value
:用户的唯一用户名。$id_value
:用户的唯一ID。$service_name
:服务名称。$cookie_name
:用于存储授权令牌的cookie名称。- 返回无
regenerate_jwt_cookie($service_name, $cookie_name)
:从提供的值重新生成唯一的JSON Web Token。如果没有找到现有cookie,将返回消息。$service_name
:服务名称。$cookie_name
:用于存储授权令牌的cookie名称。- 返回关联数组
check_jwt_cookie($service_name, $cookie_name)
:检查唯一JSON Web Token的有效性。$service_name
:服务名称。$cookie_name
:用于存储授权令牌的cookie名称。- 返回如果cookie存在且JWT有效则为true,否则为false
get_jwt_data($cookie_name)
:获取存储在唯一JSON Web Token中的数据。$cookie_name
:用于存储授权令牌的cookie名称。- 返回关联数组
rest-api
包含多个方法,实现RESTful API的通用CRUD方法。出于安全原因,某些方法未实现,而是返回包含错误代码和消息的关联数组。
createResourceRoot()
:使用数据库查询创建新的集合。- 返回包含错误消息的关联数组
createResourceElement($table, $input_fields, $input_types, $input_values)
:使用数据库查询在集合中创建新的条目。$table
:要查询的数据库表。$input_fields
:要填充的字段名称数组。$input_types
:包含一个或多个字符的字符串- 指定对应字段的类型。
$input_values
:待填充字段的值数组- 返回新创建的集合成员的ID
readResourceRoot($table, $fields)
:使用数据库查询列出集合成员$table
:要查询的数据库表。$fields
:要检索的表字段- 返回元素集合
readResourceElement($table, $fields, $element_key, $key_value)
:使用数据库查询检索集合的特定成员$table
:要查询的数据库表。$fields
:要检索的表字段$element_key
:用于特定资源识别的表字段- 资源标识。
$key_value
:用于特定资源标识的值- 标识。
- 返回成员列表或false
updateResourceRoot()
:使用数据库查询更新资源集合- 返回包含错误消息的关联数组
updateResourceElement($table, $input_fields, $input_types, $input_values, $element_key, $key_value)
:使用数据库查询更新集合的特定成员$table
:要查询的数据库表。$input_fields
:要更新字段名称的数组$input_types
:包含一个或多个字符的字符串- 指定对应字段的类型。
$input_values
:要更新字段值的数组$element_key
:用于特定资源识别的表字段- 资源标识。
$key_value
:用于特定资源标识的值- 标识。
- 返回受影响行数
deleteResourceRoot()
:使用数据库查询删除资源集合- 返回包含错误消息的关联数组
deleteResourceElement($table, $element_key, $key_value)
:使用数据库查询删除集合的特定成员$table
:要查询的数据库表。$element_key
:用于特定资源识别的表字段- 资源标识。
$key_value
:用于特定资源标识的值- 标识。
- 返回受影响行数
使用方法
提供的辅助工具应在CI_Controller
中使用,但您可以根据需要使用它们。提供的示例(controllers/Api.php)是RESTful API实现的不错起点
- 所有辅助工具都在
Api
类的__construct()
方法中加载。还创建了某些变量以用于API请求。 index()
方法是一个空方法,在没有指定URI请求中的资源时返回错误消息。users($param)
方法将不同的API方法映射到HTTP方法(创建=POST、读取=GET、更新=PUT、删除=DELETE),并使用各种辅助工具和类变量提供示例RESTful API实现。login($param)
方法允许对用户进行授权(用于更新或删除与其用户名匹配的资源)。
要查询API,应使用类似example.com/index.php/api/resource_name
(或如果您正在使用提供的.htaccess
文件,则配置为您的环境)的东西,将resource_name
替换为您的资源名称(例如users
)。请注意,某些请求可能会由于实现特定原因而返回错误。
许可证
该项目采用MIT许可证。