Flask graphql 查询与'&' returns 'Syntax Error GraphQL'
Flask graphql query with '&' returns 'Syntax Error GraphQL'
我有一个非常简单的 flask graphql 应用程序,一切正常,我可以从我的浏览器调用它,它 returns 给定的数据。
但是如果我发送一个包含“&”的字符串,我总是会收到消息 "Syntax Error GraphQL (1:22) Unterminated string \n\n1: (...) \n ^\n"
浏览器将给定的字符串拆分为参数。
有什么解决方法可以解决这个问题吗?
#!/usr/bin/env python3
import flask
import flask_graphql
import graphene
app = flask.Flask('graphql-test')
class Query(graphene.ObjectType):
helloz = graphene.String(text=graphene.String())
def resolve_helloz(self, info, text):
return text
@app.route('/')
def index():
# Create graphql view with the authentication passed as context
return flask_graphql.GraphQLView.as_view(
'index',
schema=graphene.Schema(query=Query),
graphiql=False
)()
if __name__ == '__main__':
# Run application
app.run(host='127.0.0.1', port='8001')
如果您将查询作为查询参数发送,则需要转义任何具有特殊含义的字符,例如 &
和 ?
。 &
用于分隔各个参数,因此如果不对其进行转义,query
参数最终会被解释为 {helloz(text:"test
—— 这不是有效的 GraphQL 语法。您应该改为发送:
127.0.0.1:8001?query={helloz(text:"test%26test")}
我有一个非常简单的 flask graphql 应用程序,一切正常,我可以从我的浏览器调用它,它 returns 给定的数据。
但是如果我发送一个包含“&”的字符串,我总是会收到消息 "Syntax Error GraphQL (1:22) Unterminated string \n\n1: (...) \n ^\n"
浏览器将给定的字符串拆分为参数。
有什么解决方法可以解决这个问题吗?
#!/usr/bin/env python3
import flask
import flask_graphql
import graphene
app = flask.Flask('graphql-test')
class Query(graphene.ObjectType):
helloz = graphene.String(text=graphene.String())
def resolve_helloz(self, info, text):
return text
@app.route('/')
def index():
# Create graphql view with the authentication passed as context
return flask_graphql.GraphQLView.as_view(
'index',
schema=graphene.Schema(query=Query),
graphiql=False
)()
if __name__ == '__main__':
# Run application
app.run(host='127.0.0.1', port='8001')
如果您将查询作为查询参数发送,则需要转义任何具有特殊含义的字符,例如 &
和 ?
。 &
用于分隔各个参数,因此如果不对其进行转义,query
参数最终会被解释为 {helloz(text:"test
—— 这不是有效的 GraphQL 语法。您应该改为发送:
127.0.0.1:8001?query={helloz(text:"test%26test")}