如何使用codeigniter框架读取PUT和DELETE请求?

tkqqtvp1  于 2022-12-07  发布在  其他
关注(0)|答案(4)|浏览(127)

我正在使用codeigniter框架创建一个API服务器,我想知道是否可以从任何客户端表单提交中读取PUT和DELETE请求?
用户指南对此没有过多解释。

bvpmtnay

bvpmtnay1#

您可以尝试先检测方法类型,然后区分不同的情况:

switch($_SERVER['REQUEST_METHOD']){
   case 'GET':

      ...
      break;
   case 'POST':

      ...
      break;
   case 'PUT':

      ...
      break;
   case 'DELETE':

      ...
      break;
   default:
      echo "Unknown Request.";
}
j0pj023g

j0pj023g2#

HTML标准不支持<form method="">属性中的PUT,浏览器也不支持它。浏览器通常不支持HTML表单中除GET和POST以外的方法。如果您放置除POSTGET以外的任何内容,则应根据规范将其作为GET请求发送。
在表单中使用隐藏的method字段,并将实际的HTTP。使用this library

kmynzznz

kmynzznz3#

在codeigniter中,您可以使用以下命令获取PUT或DELETE的值:$this-〉输入-〉原始输入流;您可以将字符串url拆分为array,并使用以下方法将array的值放入object中set_array()您必须在model中创建此方法,以将每个值设置为right属性,您可以通过在项目中自定义此代码来使用它:

$method = $this->input->server('REQUEST_METHOD');
    if($method === 'PUT')
    {
        $this->input->raw_input_stream;

        $input_data = $this->input->raw_input_stream;
        
        $exploded = array();
        parse_str($input_data, $exploded);
        $daman = new damancom_model();
        $daman->set_array($exploded);
        $daman->ID = $exploded["ID"];
        $daman->edit_damancom();
    }
jfewjypa

jfewjypa4#

代码点火器3
如果要使用PUT、DELETE、PATCH或其他外来请求方法,则只能通过一个只能读取一次的特殊输入流来访问它们。
请参阅文档...
https://codeigniter.com/userguide3/libraries/input.html#using-the-php-input-stream
确保您的请求已...
Content-Type: application/x-www-form-urlencoded
此外,如果发送输入,您可以通过input_stream()方法获取它们,如下所示...
$this->input->input_stream('user_id');
(i.e.将user_id更改为您在表单中使用的任何输入名称)

相关问题