meksiabdou/ci4-restful

1.0.0 2022-07-03 10:34 UTC

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 资源基础控制器

License

此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
}

要求

此库需要以下内容

安装

在您的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));