【问题标题】:Are there problems that I can run into by minifying graphql queries通过缩小 graphql 查询我可以遇到问题吗
【发布时间】:2019-04-12 18:57:26
【问题描述】:

我有一个使用 fetch 发送到服务器(使用 apollo-server)的 graphql 查询。在发送之前,我从查询字符串中去除所有额外的空格。我应该担心吗?

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

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

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

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

【问题讨论】:

    标签: javascript graphql


    【解决方案1】:

    来自规范:

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

    换句话说,你所做的并没有错。只需记住两点:

    • 如果您的查询包含字符串字面量,则该特定正则表达式也会更改字符串字面量的值,如果它包含多个空格。
    • GraphQL 返回错误,其位置包括发生错误的行号和字符号。通过像这样转换您的查询,该信息将反映转换后的查询,而不是您的原始查询。

    【讨论】:

    • 那么这显然是个坏主意。这些都是重要的成本,收益并不明显。谢谢
    猜你喜欢
    • 2021-10-31
    • 2020-05-21
    • 1970-01-01
    • 1970-01-01
    • 2018-10-11
    • 2019-11-14
    • 1970-01-01
    • 1970-01-01
    • 2020-07-25
    相关资源
    最近更新 更多