我正在尝试为firebase构建一个函数,以便通过POST方法在命令上调用url。我目前已经很好地实现了GET方法,但是POST方法让我头疼。
我有一些通过fetch调用的示例代码,但我不确定下面这个片段中的参数需要去哪里:
<?php
$url = 'https://profootballapi.com/schedule';
$api_key = '__YOUR__API__KEY__';
$query_string = 'api_key='.$api_key.'&year=2014&week=7&season_type=REG';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POSTFIELDS, $query_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$result = curl_exec($ch);
curl_close($ch);
echo $result;
?>
以下是POST请求的示例代码:
const apiKey = "myAPIkey";
const url = "https://profootballapi.com/schedule";
const response = await fetch(url, {
method: 'POST',
body: 'api_key'= apiKey, '&year=2018&week=7&season_typeRG';
headers: {'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'}});
if (!response.ok) {/* Handle */}
// If you care about a response:
if (response.body !== null) {
functions.logger.log(response.body);
}
您非常接近。您的TypeScript:中存在一些语法级别的问题
curl_setopt($ch, CURLOPT_URL, $url);
您正确地传入了url。
curl_setopt($ch, CURLOPT_POSTFIELDS, $query_string);
这只是为请求提供一个HTTP主体。您已经在提取中尝试过了,但存在一些语法问题。您应该将body
替换为:
body: `api_key=${apiKey}&year=2018&week=7&season_type=REG`
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
这是免费的。CCD_ 2自动返回CCD_ 3中的响应。
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
假设此代码将在浏览器上运行,您将无法禁用它。它告诉客户端验证服务器的SSL证书。如果可以的话,你应该避免禁用它。
我测试了这段代码,并在Chrome的调试工具中得到了一些合理的结果
const foo = async function () {
const apiKey = "myAPIkey";
const url = "https://profootballapi.com/schedule";
const response = await fetch(url, {
method: 'POST',
body: `api_key=${apiKey}&year=2018&week=7&season_type=REG`,
headers: {'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'}
});
return response;
}
foo().then(response => console.log(response));
它产生了一个500错误,但我怀疑这与没有有效的API密钥有关。我将留给您来解决如何提交有效的API请求。