CodeIgniter4 框架内如何写API

颜新
2023-12-01

1,创建Api目录;application/Api

2,创建API类;application/Api/XXX.php;//例如:News.php

<?php
/**
 * Created by PhpStorm.
 * User: zty
 * Date: 2018/4/23
 * Time: 17:37
 */
namespace Api;
use \App\Controllers\NewsController;
use \App\Models\NewsModel;

class News
{

   public function index(){
       $news = new NewsModel();
       $datas = $news->findAll();

       return json_encode($datas,true);
   }
    public  function get($id){
        $news = new NewsModel();
        $data = $news->find($id);
        var_dump($id);
        return json_encode($data);
    }

}

3,创建路由

    例子:

$routes->add('/api/', 'Api\News::index');//APi默认读取数据接口路由
$routes->get('/api/news/(:num)','Api\News::get/$1');//通过id获取信息接口路由

4,application/config/auto_load.php内

$psr4 = [
   'Config'                     => APPPATH.'Config',
   APP_NAMESPACE                => APPPATH,             // For custom namespace
   'App'                        => APPPATH,             // To ensure filters, etc still found,
   'Api'                        => APPPATH.'Api',             //添加API的自动加载名称和目录
   'Tests\Support'              => TESTPATH.'_support',    // So custom migrations can run during testing
];


5,可以请求的地址:

http://XXXXurl/api/news;

http://xxxurl/api/news/1;


如果API作为单独项目去写就简单了,所有接口写成控制器。就OK了。CI4默认的路由规则:

http://url/controller/function/参数1/参数2....

=====================================================================

另外,CI4也提供了简便安全API内置处理方式:

<?php namespace App\Controllers;

class Users extends \CodeIgniter\Controller
{
    use CodeIgniter\API\ResponseTrait;

    public function createUser()
    {
        $model = new UserModel();
        $user = $model->save($this->request->getPost());

        // 响应 201 状态码
        return $this->respondCreated();
    }
}

//常用的方法,在使用时,请关闭调试模式,避免返回信息里含有很多调试信息。默认返回格式为:json,如果结果是字符串,返回的是html格式。

// 通用响应方式
respond($data, 200);
// 通用错误响应
fail($errors, 400);
// 项目创建响应
respondCreated($data);
// 项目成功删除
respondDeleted($data);
// 客户端未授权
failUnauthorized($description);
// 禁止动作
failForbidden($description);
// 找不到资源
failNotFound($description);
// Data 数据没有验证
failValidationError($description);
// 资源已存在
failResourceExists($description);
// 资源早已被删除
failResourceGone($description);
// 客户端请求数过多
failTooManyRequests($description);


详细的手册用法请见:

https://codeigniter-chinese.github.io/codeigniter4-user-guide/libraries/api_responses.html?highlight=api


 类似资料: