chalarangelo/codeigniter-rap

CodeIgniter框架的简单RESTful API模板

v1.0.0 2017-06-28 18:24 UTC

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或更高版本

安装

  1. application文件夹中的所有文件复制并粘贴到您的应用程序中的相应目录。
  2. config.example.ini文件复制到您的应用程序文件夹外,或根据示例创建自己的配置文件。请记住将您的文件重命名为config.ini或重命名提供的示例。
  3. 创建自己的密钥并更新config.ini以确保完全安全。
  4. (可选) 复制并粘贴.example.htaccess文件并根据需要调整。请记住将其重命名为.htaccess
  5. (推荐) 启用服务器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许可证。