Запрос Flask graphql с '&' возвращает 'синтаксическую ошибку GraphQL'
У меня очень простое приложение graphql, и все работает по мере того, как я аспектирую, я могу вызвать его из своего браузера, и оно возвращает заданные данные.
Но если я отправлю строку, содержащую '&', я всегда получаю сообщение "Синтаксическая ошибка GraphQL (1:22) Незавершенная строка \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')
1 ответ
Если вы отправляете запрос в качестве параметра запроса, вам необходимо экранировать любые символы, которые имеют особое значение, например &
а также ?
. &
используется для разделения отдельных параметров, поэтому, не экранируя его, query
параметр интерпретируется как {helloz(text:"test
- что не является допустимым синтаксисом GraphQL. Вместо этого вы должны отправить:
127.0.0.1:8001?query={helloz(text:"test%26test")}