通过缩小graphql查询是否可以遇到一些问题

时间:2019-04-12 07:25:56

标签: javascript graphql

我有一个使用获取功能发送到服务器(使用apollo服务器)的graphql查询。在发送之前,我从查询字符串中去除了所有多余的空格。我应该担心吗?

const query = `
{ 
  thing {
    id
    name
    relatedThing {
      id
      name
      createdAt
    }
  }
}`

query.replace(/\s+/g, ' ')之后,我得到了...

"{ thing { id name relatedThing { id name createdAt } } }"

我没有来自服务器的任何投诉或任何怪异的行为,但是我不了解服务器的需求以及是否有可能破坏某些查询。这样可以打破一些查询吗?

1 个答案:

答案 0 :(得分:1)

根据规格:

  

空白用于提高源文本的可读性,并用作标记之间的分隔,并且在任何标记之前或之后可能会出现任何数量的空白。标记之间的空格对GraphQL文档的语义意义不重要,但是字符串或注释标记内可能会出现空格字符...像空格一样,行终止符用于提高源文本的可读性,无论多少,出现在任何其他标记之前或之后,并且对GraphQL文档的语义没有意义。在任何其他标记中都找不到行终止符。

换句话说,您所做的没有任何问题。有两件事要记住:

  • 如果您的查询包含String文字,那么该特定的正则表达式也会在包含多个空格的情况下更改String文字的值。
  • GraphQL返回错误,错误的位置包括发生错误的行号和字符号。通过像这样转换您的查询,这些信息将反映转换后的查询,而不是您原来的查询。