当前位置: 首页 > 知识库问答 >
问题:

codeigniter-restserver库中的错误

凌钊
2023-03-14

我想在ci 3.03应用程序中使用restful:

>

  • 我找到了这本tutplus教程
  • 下载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可工作的库与类似的接口像上面的库?

    谢谢


  • 共有1个答案

    卢英范
    2023-03-14

    我使用那个库,工作很好。我的建议是遵循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()”: