在 CodeIgniter 中使用 REST API 时如何定义我的函数?

Posted

技术标签:

【中文标题】在 CodeIgniter 中使用 REST API 时如何定义我的函数?【英文标题】:How can I define my function when using REST API in CodeIgniter? 【发布时间】:2019-02-24 03:32:54 【问题描述】:

我创建了一个名为 Api.php 的控制器,然后我扩展了 Rest_Controller。我注意到在这个控制器中创建函数时我只能使用 index_get()

<?php

class Api extends REST_Controller

    public function __construct()
    
        parent::__construct();

    

    public function index_get()
        $car_id = $this->get('car_id');
        if(!$car_id)

            $this->response("No Car ID specified", 400);

            exit;
        

        $result = $this->model_getvalues->getCars( $car_id );

        if($result)

            $this->response($result, 200); 

            exit;
         
        else

             $this->response("Invalid Car ID", 404);

            exit;
        
    


但是当我尝试创建我想要的函数(如 getAllCars() 而不是 index_get())时,我收到一条错误消息,告诉我未知函数。

在 CodeIgniter 中使用 rest api 库时,如何定义自己的函数而不是使用 index_get()

【问题讨论】:

看看这里github.com/chriskacerguis/…,我想你错过了这部分:方法名称将附加用于访问请求的HTTP方法。例如,如果您对 /books 进行 HTTP GET 调用,它将调用 Books#index_get() 方法 我明白你在说什么,问题是 index_ 可以是动态的,这样我就可以命名一个方法 getCars_get()、getById_get() 等等 是的,这正是我的意思,但老实说 getCars_get 有点多余,你不觉得吗?因为你已经有了_get 后缀,只需将你的方法命名为cars_get(),如果你有一个发布请求,你可以调用你的方法cars_post() - 但从外部它总是相同的,即/cars/ 问题是我是新手在codeigniter中使用rest api,如果我使用它正在工作的cars_get(),如果我想根据某些条件获取,我将如何去做@sintakonte 条件是什么意思? /cars/?id=123 之类的东西? 【参考方案1】:

谢谢我已经弄明白了,我刚刚发现 _get 之前的名称对 url 很重要附上它,它对我有用。这意味着在 API 控制器中可以有多个 _get 方法。

【讨论】:

【参考方案2】:

https://github.com/chriskacerguis/codeigniter-restserver#handling-requests 的默认方法是 index_get(),另一种使用自己方法的方法是使用 HTTP GET 参数 例如:

if($this->get('car_id') == 'all')
  //your own function here

或者如果你真的想创建自己的方法,你可以参考这个http://programmerblog.net/create-restful-web-services-in-codeigniter/

【讨论】:

在你的路由文件中定义它。试试这样 route['index_get']='api/index_get'; 我不明白你@ferry sanjaya 你读过那篇文章吗?如果你想要像 getAllCars() 这样的自定义方法而不是 index_get(),你必须加上后缀 '_get' 所以 getAllCars_get(),这是我的意见 我试过了,但它仍然抛出一个错误说未知方法 我试过了,工作正常,你用邮递员和 GET 请求测试吗??..告诉我你返回错误的整个代码【参考方案3】:

您所要做的就是将函数 index_get() 更改为 getAllCars_get(),

`

类 Api 扩展 REST_Controller

public function __construct()

    parent::__construct();



public function getAllCars_get()
    
   //your code
    

?> ` 像这样

【讨论】:

您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center。

以上是关于在 CodeIgniter 中使用 REST API 时如何定义我的函数?的主要内容,如果未能解决你的问题,请参考以下文章

codeigniter:rest apis with jwt-token,令牌在网站冲浪期间也过期

是否有一个带有/ORM(Laravel、Cake、Codeigniter)的 PHP 框架,我们可以在其中覆盖数据交互以从 rest api 中获取数据?

Phonegap错误:401未经授权 - 在Phonegap中使用基本身份验证的Rest API

带有 Backbone、DELETE 和 PUT 请求的 CodeIgniter Rest Server 返回 404

CodeIgniter REST API 库 Ajax PUT 抛出 403 Forbidden

如何将带有数据的http标头发送到rest Api codeigniter?