Клиентское мобильное приложение graphql-flutter не может подключиться к серверу. Конечная точка graphQL, созданная Graphene- Django - PullRequest
0 голосов
/ 29 марта 2020

Я делаю простой GraphQL-сервер, используя графен- django, и я успешно тестирую запрос и мутацию в браузере рабочего стола на http://127.0.0.1: 8000 / graphql . Также для тестирования в мобильном приложении я создаю простое мобильное приложение, использующее пакет graphql_flutter . мое приложение флаттера было успешно протестировано с конечной точкой hasura-heroka graphql, но мое приложение флаттера не может подключиться к моей конечной точке графена- django graphql. при попытке запустить мобильное приложение выдает сообщение об ошибке:

ClientExceptation: не удалось подключиться к http://127.0.0.1: 8000 / graphql .

С другой стороны, для решения этой проблемы я делаю ALLOWED_HOSTS = ['мой адрес Ipv4'] в settings.py в django проекте и запускаю сервер graphene- django с этим новым хостом, и я попытался запустить мобильное приложение флаттера с новой конечной точкой: http://my_IPv4_address: 8000 / graphql , , но все еще не работает и выдает ту же ошибку .

, пожалуйста, помогите мне

1 Ответ

0 голосов
/ 30 марта 2020

Я решаю вышеупомянутую проблему. Я освобождаю свою конечную точку Graphql от защиты CSRF, оборачивая GraphQLView с декоратором csrf_exempt в файле urls.py в проекте django, точно так же, как это (см. source ):

from django.conf.urls import url, include
from django.contrib import admin
from django.views.decorators.csrf import csrf_exempt
from graphene_django.views import GraphQLView
from cookbook.schema import schema

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^graphql$', csrf_exempt(GraphQLView.as_view(graphiql=True,schema=schema))),
]

следует отметить, что я использовал «http://my-IPv4-address: 8000 / graphql » для успешного подключения после вышеупомянутой модификации в настройках CSRF Protection. для получения IPv4-адреса следуйте этому руководству . после этого я добавил адрес my-IPv4 в ALLOWED_HOSTS в файле settings.py следующим образом:

ALLOWED_HOSTS = ['192.168.x.xxx', 'localhost', '127.0.0.1']

и, наконец, для запуска сервера графен- django я использую эту команду в консоли cmd:

(env) python ./manage.py runserver 0.0.0.0:8000
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...