【发布时间】:2020-09-30 07:49:30
【问题描述】:
我只是想确认我对如何将 graphql 变量从 php 传递到 graphql 查询的理解。我正在使用 php Curl 执行我对 graphql api 服务器的请求。
$data='
query($businessId : ID!, $page : Int!, $pageSize : Int!) {
business(id: $businessId) {
id
isClassicInvoicing
invoices(page: $page, pageSize: $pageSize) {'
...
$variables=array(
'$businessId'=>'"xxxx"',
'$page'=>1,
'$pageSize'=>5);
$payData = urlencode($data);
$payVariables = urlencode(json_encode($variables));
$apiURL=$apiURL . '?' . "query=".$payData."&variables=".$payVariables ;
我得到的错误是 - 所需类型“Int!”的变量“$page”没有提供。我也收到了 $businessId 和 $pageSize 的错误。
【问题讨论】:
-
grphql 通过 POST 工作,而不是 GET
-
感谢@xadm - 获取请求是正确的,问题是变量数组的结构。我将在下面的答案中发布。
-
GET 有缺点,例如url 长度,应该避免,仅限于非常简单的用例......你可以使用 `$variables=(object)array(` - 将 json-ed 作为对象