我正在使用codeigniter框架创建一个API服务器,我想知道是否可以从任何客户端表单提交中读取PUT和DELETE请求?
用户指南对此没有太多解释。
您可以尝试先检测方法类型,然后将不同的情况分开:
switch($_SERVER['REQUEST_METHOD']){
case 'GET':
...
break;
case 'POST':
...
break;
case 'PUT':
...
break;
case 'DELETE':
...
break;
default:
echo "Unknown Request.";
}
HTML标准不支持<form method="">
属性中的PUT
,浏览器也不支持它。浏览器通常不支持HTML表单中的GET和POST以外的方法。如果您放置除POST
或GET
之外的任何其他内容,则应根据规范将其作为GET请求发送。
在表单中使用隐藏的method
字段,并放入实际的HTTP。使用此库
在codeigniter中,您可以通过以下方式获取PUT或DELETE的值:$this->输入->raw_input_stream;您可以将字符串url拆分为数组,并使用此方法将数组的值放入对象setarray((您必须在模型中创建此方法才能将每个值设置为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();
}
Codeigniter 3
如果您想使用PUT、DELETE、PATCH或其他奇特的请求方法,则只能通过只能读取一次的特殊输入流来访问它们。
请参阅文档。。。
https://codeigniter.com/userguide3/libraries/input.html#using-php输入流
请确保您的请求具有。。。
Content-Type: application/x-www-form-urlencoded
此外,如果发送输入,您可以通过下面这样的input_stream((方法获取它们。。。
$this->input->input_stream('user_id');
(即更改您在表单上使用的输入名称的user_id(