在PHP中放置API的请求和变量
我目前正在构建一个API,我想将更新(我使用POST)和创建(我想使用PUT)分开。这似乎是一个愚蠢的问题,但如何检索通过PUT发送的变量?PHP中没有$\u PUT数组。我正在尝试通过WFetch以以下方式发送数据:在PHP中放置API的请求和变量,php,api,put,Php,Api,Put,我目前正在构建一个API,我想将更新(我使用POST)和创建(我想使用PUT)分开。这似乎是一个愚蠢的问题,但如何检索通过PUT发送的变量?PHP中没有$\u PUT数组。我正在尝试通过WFetch以以下方式发送数据: Content-Type: application/x-www-form-urlencoded\r\n \r\n Name=Test\r\n 我试图查找如何使用PUT,但似乎无法找到答案。使用以下方法在PHP中创建$\u PUT数组: parse_str(file_get_co
Content-Type: application/x-www-form-urlencoded\r\n
\r\n
Name=Test\r\n
我试图查找如何使用PUT,但似乎无法找到答案。使用以下方法在PHP中创建
$\u PUT
数组:
parse_str(file_get_contents('php://input'), $_PUT);
现在,您可以使用
$\u PUT['Name']
获取“Test”
使用以下方法在PHP中创建$\u PUT
数组:
parse_str(file_get_contents('php://input'), $_PUT);
现在您可以使用
$\u PUT['Name']
来获取“Test”
使用$\u REQUEST[“您的目标”]
来访问通过PUT请求发送的数据使用$\u REQUEST[“您的目标”]
来访问通过PUT请求发送的数据PHP PUT给了我艰难的时间,此函数将节省某人的时间:
function parsePutRequest()
{
// Fetch content and determine boundary
$raw_data = file_get_contents('php://input');
$boundary = substr($raw_data, 0, strpos($raw_data, "\r\n"));
// Fetch each part
$parts = array_slice(explode($boundary, $raw_data), 1);
$data = array();
foreach ($parts as $part) {
// If this is the last part, break
if ($part == "--\r\n") break;
// Separate content from headers
$part = ltrim($part, "\r\n");
list($raw_headers, $body) = explode("\r\n\r\n", $part, 2);
// Parse the headers list
$raw_headers = explode("\r\n", $raw_headers);
$headers = array();
foreach ($raw_headers as $header) {
list($name, $value) = explode(':', $header);
$headers[strtolower($name)] = ltrim($value, ' ');
}
// Parse the Content-Disposition to get the field name, etc.
if (isset($headers['content-disposition'])) {
$filename = null;
preg_match(
'/^(.+); *name="([^"]+)"(; *filename="([^"]+)")?/',
$headers['content-disposition'],
$matches
);
list(, $type, $name) = $matches;
isset($matches[4]) and $filename = $matches[4];
// handle your fields here
switch ($name) {
// this is a file upload
case 'userfile':
file_put_contents($filename, $body);
break;
// default for all other files is to populate $data
default:
$data[$name] = substr($body, 0, strlen($body) - 2);
break;
}
}
}
return $data;
}
PHP put给了我很多时间,这个函数可以节省一些人的时间:
function parsePutRequest()
{
// Fetch content and determine boundary
$raw_data = file_get_contents('php://input');
$boundary = substr($raw_data, 0, strpos($raw_data, "\r\n"));
// Fetch each part
$parts = array_slice(explode($boundary, $raw_data), 1);
$data = array();
foreach ($parts as $part) {
// If this is the last part, break
if ($part == "--\r\n") break;
// Separate content from headers
$part = ltrim($part, "\r\n");
list($raw_headers, $body) = explode("\r\n\r\n", $part, 2);
// Parse the headers list
$raw_headers = explode("\r\n", $raw_headers);
$headers = array();
foreach ($raw_headers as $header) {
list($name, $value) = explode(':', $header);
$headers[strtolower($name)] = ltrim($value, ' ');
}
// Parse the Content-Disposition to get the field name, etc.
if (isset($headers['content-disposition'])) {
$filename = null;
preg_match(
'/^(.+); *name="([^"]+)"(; *filename="([^"]+)")?/',
$headers['content-disposition'],
$matches
);
list(, $type, $name) = $matches;
isset($matches[4]) and $filename = $matches[4];
// handle your fields here
switch ($name) {
// this is a file upload
case 'userfile':
file_put_contents($filename, $body);
break;
// default for all other files is to populate $data
default:
$data[$name] = substr($body, 0, strlen($body) - 2);
break;
}
}
}
return $data;
}
PHP文档提供了一个示例,说明PUT方法可能用于文件上传,而不是表单数据。PHP因此忽略了有效负载。但是您可以手动
parse_str()
thephp://input
handle。我是否有义务在服务器上保存一个文件,然后读取该文件以获取数据?您不必将其保存到文件中。您只需阅读php://input
.PHP文档提供了一个示例,该PUT方法可能重复用于文件上传,而不是表单数据。PHP因此忽略了有效负载。但是您可以手动parse_str()
thephp://input
handle。我是否有义务在服务器上保存一个文件,然后读取该文件以获取数据?您不必将其保存到文件中。您只需阅读php://input
。