Codeigniter RESTful服务路由

时间:2017-07-15 14:18:11

标签: php rest codeigniter

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

但是,我对如何实现路由感到有点困惑。该教程提到使用完整的URL,但我喜欢这样做:

我的控制器

类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&#39 ;; < =这将触发未知方法错误

$ route [' AdminLogin_WS / Login'] =' AdminLogin_WS / login&#39 ;; < =这将调用get函数

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));
    }

如何指定帖子或获取的功能?

2 个答案:

答案 0 :(得分:2)

您可以分别使用_post()_get()指定功能是发布还是获取。

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

这样的东西
$route['method/param1'] = 'controller/method/param1';

答案 1 :(得分:1)

更新了聊天信息

使用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的可能性?