meksiabdou / ci4-restful
1.0.0
2022-07-03 10:34 UTC
Requires
- php: >=7.3
- agungsugiarto/codeigniter4-cors: ^v2.0.0
- myth/auth: ^v1.0.1
Requires (Dev)
- codeigniter4/framework: ^v4.2.1
This package is auto-updated.
Last update: 2024-09-10 18:36:23 UTC
README
CodeIgniter 4 RESTful & Auth Api
CodeIgniter 4 RESTful & Auth Api 资源基础控制器
此RESTful API扩展包含在composer require meksiabdou/ci4-restful中,它是Codeigniter框架的完整解决方案。
特性
-
身份验证使用package myth/auth
-
RESTful API实现
-
日志记录请求
概要
演示
use CI4Restful\Helpers\RestServer; class ApiController extends RestServer { public function index() { return $this->response_json(["id" => 1, "bar" => "foo" ]], true); } }
状态码 200 OK
的输出
{ "results" : { "id": 1, "bar" : "foo", }, "status" : true, }
RESTful 创建功能
public function store($requestData=null) { $this->db->insert('mytable', $requestData); $id = $this->db->insert_id(); return $this->response->json(['id'=>$id], true , 201); }
状态码 201
的输出
{ "results" : { "id": 1, }, "status" : true, }
错误输出
public function store($requestData=null) { if(!$requestData) { return $this->response->json([], false ); } }
{ "results" : {}, "status" : false, }
状态码 403 Forbidden
的输出
{ "code": 403, "error":"API forbidden", "status" : false }
要求
此库需要以下内容
- PHP 7.4+
- CodeIgniter 4+
- agungsugiarto/codeigniter4-cors
- myth/auth
安装
在您的Codeigniter项目中运行Composer
composer require meksiabdou/ci4-restful
配置
配置CORS agungsugiarto/codeigniter4-cors
要允许所有路由的CORS,首先在App/Config/Filter.php类的$aliases属性顶部注册CorsFilter.php过滤器
public $aliases = [ 'cors' => \Fluent\Cors\Filters\CorsFilter::class, // ... ];
通过编辑app/Config/Filters.php并根据其URI模式限制路由,将它们添加到$filters数组中
public filters = [ // ... 'cors' => ['after' => ['api/*']], ];
配置公共令牌
要访问公共路由,生成令牌并将$token_app
添加到app\Config\App.php
class App extends BaseConfig { public $token_app = ['2ve7Wq9P2QLnzQMlN2uVnBfb10xvOY0NQTuQ7Q']; //...
创建一个控制器以扩展CI4Restful\Helpers\RestServer
class Store extends RestServer {}
RESTful 身份验证API
https://yourname.com/api/login (POST)
https://yourname.com/api/register (POST)
https://yourname.com/api/logout (POST)
https://yourname.com/api/forgot-password (POST)
https://yourname.com/api/reset-password (POST)
https://yourname.com/api/update-user (PUT)
https://yourname.com/api/resend-activate-account (PUT)
https://yourname.com/api/p/update (for update password) (POST)
HttpRequest(公开路由)
const formData = new FormData(); formData.append('identity', 'user@email.com') formData.append('password', 'password123'); var requestOptions = { method: 'POST', headers: { "token" : "2ve7Wq9P2QLnzQMlN2uVnBfb10xvOY0NQTuQ7Q" }, body: formData, redirect: 'follow' }; fetch("https://yourname.com/api/login", requestOptions) .then(response => response.json()) .then(result => console.log(result)) .catch(error => console.log('error', error));
HttpRequest(私有路由)
const formData = new FormData(); formData.append('email', 'user@email.com') formData.append('password', 'password123'); formData.append('newPassword', 'newPassword123'); formData.append('confirmPassword', 'newPassword123'); var requestOptions = { method: 'PUT', headers: { "token" : userToken, }, body: formData, redirect: 'follow' }; fetch("https://yourname.com/p/update", requestOptions) .then(response => response.json()) .then(result => console.log(result)) .catch(error => console.log('error', error));