gpt4 book ai didi

php - get 方法不适用于 php rest web 服务

转载 作者:行者123 更新时间:2023-11-29 03:00:33 24 4
gpt4 key购买 nike

打扰一下,我尝试使用请求方法 POST 和 GET 来创建 restful web 服务,我终于成功地使用 GET 方法查看 mysql 上的数据,但是当我使用 POST 方法搜索数据或删除数据时,任何使用 POST 方法的方法都不起作用。我不知道为什么...检查一下

private function users(){
// Cross validation if the request method is GET else it will return "Not Acceptable" status
if($this->get_request_method() != "GET") {
$this->response('',406);
}
$sql = mysql_query("SELECT user_id, user_fullname, user_email FROM users WHERE user_status = 1", $this->db);
if(mysql_num_rows($sql) > 0) {
$result = array();
while($rlt = mysql_fetch_array($sql,MYSQL_ASSOC)){
$result[] = $rlt;
}
// If success everythig is good send header as "OK" and return list of users in JSON format
$this->response($this->json($result), 200);
}
$this->response('',204); // If no records "No Content" status
}

然后删除方法

private function deleteUser() {
// Cross validation if the request method is DELETE else it will return "Not Acceptable" status
if($this->get_request_method() != "DELETE"){
$this->response('',406);
}
$id = (int)$this->_request['id'];
if($id > 0) {
mysql_query("DELETE FROM users WHERE user_id = $id");
$success = array('status' => "Success", "msg" => "Successfully one record deleted.");
$this->response($this->json($success),200);
} else
$this->response('',204); // If no records "No Content" status
}

最佳答案

您的 users() 和 deleteUser() 函数专门分别检查 GET 和 DELETE 的 REQUEST_METHOD。因此,如果在 POST 完成时调用其中任何一个函数,它们都将返回 406

更新:评论的回答:我应该怎么做才能解决这个问题?

如果希望相同的函数与 POST 以及它们各自的主要 REQUEST_METHOD 一起使用,那么您需要允许验证 POST 请求方法。

private function users(){
// Cross validation if the request method is GET else it will return "Not Acceptable" status
if ($this->get_request_method() != 'GET' && $this->get_request_method() != 'POST') {
$this->response('',406);
}

private function deleteUser() {
// Cross validation if the request method is DELETE else it will return "Not Acceptable" status
if ($this->get_request_method() != 'DELETE' && $this->get_request_method() != 'POST') {
$this->response('',406);
}

对于 deleteUser 函数,我假设 $this->_request 来自 $_REQUEST,并且可以获取 id来自查询字符串或来自表单帖子。

由于您只展示了这两个函数,如果请求是 POST,我无法确定是否有其他代码会将操作重定向到其他地方。

关于php - get 方法不适用于 php rest web 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24422053/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com