【发布时间】:2018-12-20 07:35:43
【问题描述】:
我正在使用 codeigniter 框架创建一个 API 服务器,我想知道是否可以从任何客户端表单提交中读取 PUT 和 DELETE 请求?
用户指南对此没有过多解释。
【问题讨论】:
-
使用这个
$this->input->method();
标签: php codeigniter codeigniter-3
我正在使用 codeigniter 框架创建一个 API 服务器,我想知道是否可以从任何客户端表单提交中读取 PUT 和 DELETE 请求?
用户指南对此没有过多解释。
【问题讨论】:
$this->input->method();
标签: php codeigniter codeigniter-3
可以尝试先检测方法类型,区分不同的情况:
switch($_SERVER['REQUEST_METHOD']){
case 'GET':
...
break;
case 'POST':
...
break;
case 'PUT':
...
break;
case 'DELETE':
...
break;
default:
echo "Unknown Request.";
}
【讨论】:
<form method=""> 属性中的 HTML 标准 does not support PUT 并且浏览器也不支持它。浏览器通常不支持 HTML 表单中除 GET 和 POST 之外的方法。如果您放了除POST 或GET 以外的任何其他内容,则应根据规范将其作为GET 请求发送。
在表单中使用隐藏的method 字段并输入实际的HTTP。使用this library
【讨论】:
在 codeigniter 中,您可以使用以下命令获取 PUT 或 DELETE 的值: $this->input->raw_input_stream;并且您可以使用此方法将字符串 url 拆分为数组并将数组的值放入对象中 set_array() 您必须在模型中创建此方法以将每个值设置为正确的属性 您可以通过在您的项目中自定义它来使用此代码:
$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();
}
【讨论】: