graphql-flutter客户端移动应用无法连接到由Graphene-Django创建的服务器graphQL端点

问题描述 投票:-1回答:1

我使用graphene-django制作了一个简单的graphql服务器,并且在http://127.0.0.1:8000/graphql的桌面浏览器中成功测试了查询和变异。也为了在移动应用程序中进行测试,我制作了一个使用graphql_flutter包的简单颤动的移动应用程序。我的flutter应用程序已成功通过hasura-heroka graphql端点进行了测试,但是我的flutter应用程序无法连接到我的graphene-django graphql端点。当我尝试运行我的移动应用程序时,它给出了一个错误信息:

ClientExceptation:无法连接到http://127.0.0.1:8000/graphql

另一方面,为了解决此问题,我在Django项目的settings.py中设置了ALLOWED_HOSTS = ['我的Ipv4地址'],并使用此新主机运行graphene-django服务器,并且尝试使用以下方式运行Flutter移动应用程序:新的Endpoin:http://my_IPv4_address:8000/graphql但仍无法正常工作,并给出相同的错误

请帮助我

flutter graphql connection graphene-python graphene-django
1个回答
0
投票

我解决了上述问题。我将GraphQLView与csrf_exempt装饰器包装在django项目的urls.py文件中,从而免除了GraphqlView的CSRF保护(与此相同(请参见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))),
]

应该提到的是,在CSRF保护设置中进行了上述修改之后,我在flutter应用程序中使用了http://my-IPv4-address:8000/graphql来成功连接。要获得IPv4地址,请遵循此guide。之后,我将我的IPv4地址添加到settings.py文件中的ALLOWED_HOSTS中,如下所示:

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

最后是运行graphene-django服务器,我在cmd控制台中使用此命令:

(env) python ./manage.py runserver 0.0.0.0:8000
© www.soinside.com 2019 - 2024. All rights reserved.