在JavaScript中转义输入字符串的正确方法是什么?

时间:2017-10-12 14:23:11

标签: javascript string escaping graphql graphql-js

请参阅注入的JavaScript变量的graphql变异(请忽略它是手动构建的,而不是通过某些gql帮助程序构建)

mutation {
  createPost(
    name: "${name}",
    description: "${description}" 
  ) { id }
}

是否有任何标准功能可以转义name& description字符串变量?

EG。一些函数gqlEscape将使查询安全:

mutation {
  createPost(
    name: "${gqlEscape(name)}",
    description: "${gqlEscape(description)}" 
  ) { id }
}

该功能如何?

1 个答案:

答案 0 :(得分:0)

您可以使用专为您的用例设计的GraphQL变量,而不是进行字符串插值。您也可以使用原始HTTP执行此操作,但在这种情况下我通常使用graphql-request

以下是一个例子:

import { request } from 'graphql-request'

const mutation = `
  mutation newPost($name: String!, $description: String) {
    createPost(
      name: $name,
      description: $description 
    ) {
      id
    }
  }
`

const variables = {
  name: 'New Post',
}

request('my-endpoint', mutation, variables).then(data => console.log(data))

一些注意事项:

  • 我定义了两个变量name: String!description: StringString!表示,它是String类型的必需变量,而String表示它是可选变量。你可以看到我没有传递description的值,这是可能的,因为它是可选的。
  • 我做了指定两个字符串的双引号,这已经由GraphQL变量本身处理。
  • 您可以阅读有关GraphQL变量herehere的更多信息。