gpt4 book ai didi

php - 如何从 PHP 脚本查询 Github GraphQL API?

转载 作者:行者123 更新时间:2023-12-02 10:47:30 25 4
gpt4 key购买 nike

我正在查询 Github API 以获取一些内部监控接口(interface)。我遇到了新的GraphQL implementation并决定将其用于我的界面。

因此,我准备了这个小型 PHP 脚本来测试我粘贴在下面的 Github GraphQL API。每当我运行脚本时,我总是收到“解析 JSON 时出现问题”错误。我在这里做错了什么吗?有人可以帮我强调我犯的任何错误吗?

<?php
//GRAPHQL request
$postData =<<<‘JSON’
{
“query”: query{
user(login:“tojochacko”) {
name
}
}
}
JSON;

$json = json_encode($postData);

$chObj = curl_init();
curl_setopt($chObj, CURLOPT_URL, ‘https://api.github.com/graphql’);
curl_setopt($chObj, CURLOPT_RETURNTRANSFER, true);
curl_setopt($chObj, CURLOPT_CUSTOMREQUEST, ‘POST’);
curl_setopt($chObj, CURLOPT_POSTFIELDS, $json);
curl_setopt($chObj, CURLOPT_HEADER, true);
curl_setopt($chObj, CURLOPT_VERBOSE, true);
curl_setopt($chObj, CURLOPT_HTTPHEADER,
array(
‘User-Agent: PHP Script’,
‘Content-Type: application/json’,
'Authorization: bearer '.GITHUB_TOKEN
)
);

$response = curl_exec($chObj);
echo $response;
?>

最佳答案

我自己找到了修复方法。我传递给 Github API 的 JSON 格式不正确。不幸的是,Github 没有关于预期格式的正确文档。我必须阅读 GraphQL 规范并深入研究一些 php 客户端库代码才能理解其格式。以下是查询 Github GraphQL API 的正确代码。希望这对遇到同样问题的人有所帮助。

//GRAPHQL request
$query = <<<'JSON'
query{
user(login:"tojochacko") {
name
}
}
JSON;
$variables = '';

$json = json_encode(['query' => $query, 'variables' => $variables]);

$chObj = curl_init();
curl_setopt($chObj, CURLOPT_URL, ‘https://api.github.com/graphql’);
curl_setopt($chObj, CURLOPT_RETURNTRANSFER, true);
curl_setopt($chObj, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($chObj, CURLOPT_HEADER, true);
curl_setopt($chObj, CURLOPT_VERBOSE, true);
curl_setopt($chObj, CURLOPT_POSTFIELDS, $json);
curl_setopt($chObj, CURLOPT_HTTPHEADER,
array(
'User-Agent: PHP Script',
'Content-Type: application/json;charset=utf-8',
'Authorization: bearer '.GITHUB_TOKEN
)
);

$response = curl_exec($chObj);
echo $response;

关于php - 如何从 PHP 脚本查询 Github GraphQL API?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45238419/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com