我正在尝试将RESTful服务集成到我的Codeigniter应用程序中。我正在使用此库https://github.com/chriskacerguis/codeigniter-restserver和https://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));
}
如何指定帖子或获取的功能?
答案 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的可能性?