【问题标题】:passing variables to graphql in php在php中将变量传递给graphql
【发布时间】: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 作为对象

标签: php graphql php-curl


【解决方案1】:

$variables 的结构不正确。正确的做法是

$variables='
{
  "businessId": "xxxx",
  "page": 1,
  "pageSize": 5
}';

【讨论】:

    猜你喜欢
    • 2020-11-30
    • 2020-01-24
    • 2020-05-05
    • 2017-05-15
    • 2021-05-30
    • 1970-01-01
    • 2020-12-26
    • 2014-04-23
    • 2011-06-20
    相关资源
    最近更新 更多