我想在ci 3.03应用程序中使用restful:
>
codeigniter restserver主机。压缩文件并复制格式。php和REST\u控制器。php(@version 3.0.0)
文件进入/application/libraries/REST目录
我创建了控制应用程序/控制器/api/用户。php:
require_once("application/libraries/REST/REST_Controller.php");
require_once("application/libraries/REST/Format.php");
class Users extends REST_Controller
{
//protected $rest_format = 'json';
function users_get()
{
//$users = $this->user_model->get_all();
$filter_username= $this->get('filter_username');
$filter_user_group= $this->get('filter_user_group');
$filter_active= $this->get('filter_active');
$sort= $this->get('sort');
$sort_direction= $this->get('sort_direction');
//, $filter_user_group, $filter_active, $sort, $sort_direction
$users_list = $this->muser->getUsersList(false, ''/*, $filter_username, $filter_user_group, $filter_active, $sort, $sort_direction, ''*/);
echo '<pre>'.count($users_list).'::$users_lists::'.print_r($users_list,true).'</pre>';
if($users_list)
{
$this->response($users, 200);
}
else
{
$this->response(NULL, 404);
}
}
和正在运行的URLhttp://local-ci3.com/api/users我犯了很多错误:
遇到一个PHP错误
Severity: Notice
Message: Undefined property: Users::$format
Filename: REST/REST_Controller.php
Line Number: 734
Backtrace:
File: /mnt/diskD_Work/wwwroot/ci3/application/libraries/REST/REST_Controller.php
Line: 734
Function: _error_handler
File: /mnt/diskD_Work/wwwroot/ci3/application/libraries/REST/REST_Controller.php
Line: 649
Function: response
File: /mnt/diskD_Work/wwwroot/ci3/index.php
Line: 292
Function: require_once
A PHP Error was encountered
Severity: Notice
Message: Undefined property: Users::$format
Filename: REST/REST_Controller.php
Line Number: 752
Backtrace:
File: /mnt/diskD_Work/wwwroot/ci3/application/libraries/REST/REST_Controller.php
Line: 752
Function: _error_handler
File: /mnt/diskD_Work/wwwroot/ci3/application/libraries/REST/REST_Controller.php
Line: 649
Function: response
File: /mnt/diskD_Work/wwwroot/ci3/index.php
Line: 292
Function: require_once
事实上,我想得到一些可行的库来帮助我创建REST api。我认为这是比从零开始做更好的方法。但是这个库是不可行的还是需要一些修复?对不起,我错过的是,如果这个图书馆只为ci 2?
我在这个论坛上搜索,发现了这样的提示:
当我将Format.php和Rest_Controller.php加载到控制器时,我也有同样的问题。快速浏览Format.php后,它似乎是一个独立的格式转换助手。试着加载Rest_Controller.php,看看你的问题是否会消失。
我评论了行
//require_once("application/libraries/REST/Format.php");
在我的控制器中,但仍然会出现如下错误:Message:Undefined property:Users::$format。我试图查看该库的代码,并在数据转换为json格式时看到无效块,第731-757行:
elseif ($data !== NULL)
{
// If the format method exists, call and return the output in that format
if (method_exists($this->format, 'to_' . $this->response->format))
{
// Set the format header
$this->output->set_content_type($this->_supported_formats[$this->response->format], strtolower($this->config->item('charset')));
$output = $this->format->factory($data)->{'to_' . $this->response->format}();
// An array must be parsed as a string, so as not to cause an array to string error
// Json is the most appropriate form for such a datatype
if ($this->response->format === 'array')
{
$output = $this->format->factory($output)->{'to_json'}();
}
}
else
{
// If an array or object, then parse as a json, so as to be a 'string'
if (is_array($data) || is_object($data))
{
$data = $this->format->factory($data)->{'to_json'}();
}
// Format is not supported, so output the raw data as a string
$output = $data;
}
}
如果我试图评论这个块,但得到错误
Message: Array to string conversion
看起来在这种情况下数据没有转换...
是否有可能修复这些错误?或者你可以,请,告诉我建议一些codeigniter 3 REST api可工作的库与类似的接口像上面的库?
谢谢
我使用那个库,工作很好。我的建议是遵循github上更相关的安装说明。
您还错误地放置lib文件:
>
教程说:
require(APPPATH'.libraries/REST_Controller.php');
你试试:
require_once("application/libraries/REST/REST_Controller.php");
require_once("application/libraries/REST/Format.php");
不需要包含格式
,因为在第407行,lib将加载它。在第404行,它将加载配置(application/config/rest.php
),这将是您的默认配置,您也可以根据需要更改它。
如果您使用我的答案仍然有错误,请告诉我:)
我正在使用CodeIgniter和RestServer实现构建一个APIhttps://github.com/chriskacerguis/codeigniter-restserver 我想使用会话身份验证模式,所以我在配置/rest.php中设置了这个: 在config/config中。php: 我有一个控制器身份验证,其代码如下: 会话存储在数据库中,并包含来自$user的数据。pr回显数据(
问题内容: 当我的客户端应用和api位于本地主机时,agularJs控制器中的http.get请求可以正常工作。将api移至服务器时,出现问题。 客户端使用angularJs 日志给出:跨域请求被阻止:同源策略禁止读取位于http://domain.com/api/spots/2/0的远程资源。可以通过将资源移至同一域或启用CORS来解决此问题。 我已经将这两行添加到我的控制器构造中 还是一样的错
http。当我的客户端应用程序和api位于localhost中时,agularJs控制器中的get请求工作正常。当api移动到服务器时。,问题出现了。 使用angularJs的客户端 日志给出:跨源请求被阻止:同源策略不允许读取远程资源http://domain.com/api/spots/2/0.这可以通过将资源移动到同一域或启用CORS来解决。 我已经将这两行添加到我的控制器构造中 还是一样的
restserver是一个小巧、高效、低耗的C技术栈的RESTful应用服务平台。 小巧是因为链接出来的可执行程序只有300多KB,应用接口库80KB,本体源码都在一个目录中,手写的大概一千行左右,用预置好的makefile一条命令就能完成源码编译安装。 高效是因为她完全用C编写而成,采用多进程+多路复用模型,参考Nginx。 低耗是因为空载运行只占了几MB内存,特别适合买不起高配云服务器的个人开
我正在使用Chris Kacerguis的Codeigniter中的restserver,并设置rest_auth会话。当我登录时,我访问view.php通过file_get_contents得到响应的页面,它返回401未经授权。当我在新选项卡中访问API的直接页面时,它会正确返回json。 景色。php以以下方式加载API内容: 答复如下: 遇到一个PHP错误 严重性:警告 消息:file_ge
问题内容: 有没有一种方法可以使 CI 在遇到 数据库错误 时抛出 异常 ,而不是显示如下消息: __ 发生数据库错误,错误号:1054’where子句’中的未知列’foo’SELECT * FROM()WHERE =‘1’ 注意:我只希望这在一个控制器中发生。在其他控制器中,我很高兴它显示 DB错误消息 。 问题答案: 尝试这些CI功能 更新 不建议使用函数,而应使用“ error()”: