【问题标题】:Codeigniter RESTful services routingCodeigniter RESTful 服务路由
【发布时间】:2017-12-20 12:17:16
【问题描述】:

我正在尝试将 RESTful 服务集成到我的 Codeigniter 应用程序中。我正在使用这个库https://github.com/chriskacerguis/codeigniter-restserver 和来自https://code.tutsplus.com/tutorials/working-with-restful-services-in-codeigniter--net-8814 的教程。

但是,我对如何实现路由有点困惑。该教程提到使用完整的网址,但我想做类似的事情:

我的控制器

类 AdminLogin_WS 扩展 REST_Controller {

public function __construct() {        
    parent::__construct();
    $this->load->model('AccountModel');
}
public function login_get(){
    $this->response(json_encode(null));
}

public function login_post(){
    $username = $this->post('username');
    $this->response(json_encode($username));
}

}

我的路线

$route['AdminLogin_WS/Login']['post']= 'AdminLogin_WS/login_post';

$route['AdminLogin_WS/Login']= 'AdminLogin_WS/login';

REST 请求

public function ws_login(){
        $this->curl->create('https://url.com/AdminLogin_WS/Login');
        $this->curl->http_login('login','password');
        $this->curl->post(array(
            'username' => 'auser'
        ));
        $result = $this->curl->execute();
        var_dump(json_decode($result));
    }

如何指定 post 或 get 的功能?

【问题讨论】:

    标签: php rest codeigniter


    【解决方案1】:

    您可以分别使用_post()_get() 指定函数是post 还是get。

    对于您的路由,我认为您的路由错误。主要路线和备用路线之间应该有区别。你应该有类似的东西

    $route['method/param1'] = 'controller/method/param1';
    

    【讨论】:

      【解决方案2】:

      更新了聊天信息

      使用 login_get()login_post() 然后向 AdminLogin_WS/login 发出 POST 请求是正确的做法,并且 login_post() 被调用,只是有些混乱,因为 POST 返回相同的响应作为 GET 使用海报使用的代码。


      原答案

      我会将此作为评论发布,但没有代表这样做。

      “仅当我创建一个名为 login_get() 的控制器函数时它才有效”是什么意思?在我看来,这听起来像是您正在向您的路线发送 GET 而不是 POST。你能提供一些关于你如何测试的信息,看看你是否可以发布并到达你的login_post()?您是否尝试过下载 Postman (https://www.getpostman.com/) 之类的工具并发送 POST 以帮助消除您未正确发送 POST 的可能性?

      【讨论】:

      • 我正在使用邮递员。如果我不创建 login_get() 并且只有 login_post(),我上面显示的路由不起作用
      • 但是,如果您发送 POST 并且您确实定义了 login_get,您的 login_post() 确实会被调用?如果是这样,这听起来很奇怪。我从未使用过您正在使用的库,所以我不能说它绝对不应该那样工作,但我不希望它。您可能需要发布您的确切代码以获得熟悉该库的人(我不是)的更多帮助,或者可能考虑在他们的问题页面上提出问题。
      • 这很奇怪。它一直在使用 post 方法说 {"status":false,"error":"Unknown method"}。因此,对于发布路线,我将使用 AdminLogin_WS/login_post 并作为出现的错误
      • 您要发布到AdminLogin_WS/login_post?我以为你的路线是AdminLogin_WS/login?如果您 POST 到 AdminLogin_WS/login,它会发送到您的 login_post 函数吗?
      • 我正在向 AdminLogin_WS/login_post 发帖。如果我把它放在我的路线上,它会说未知方法。如果我删除 _post,名为 login_get 的函数将被触发
      猜你喜欢
      • 2011-07-05
      • 1970-01-01
      • 1970-01-01
      • 2016-05-30
      • 1970-01-01
      • 2017-05-14
      • 1970-01-01
      • 2015-02-03
      • 2014-06-08
      相关资源
      最近更新 更多