在 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