......接上一篇文章,我们将用GraphQLAPI配置Django。Django提供GraphQL接口服务后,我们需要让前端消费这些接口数据。以Vue为例,看看前端是如何访问后端GraphQLAPI的。本文提供了一个工作demo,可以先保存,以后有需要可以直接使用。首先创建一个Vue项目,执行以下命令创建并启动一个Vuehello-world项目:vuecreatehello-worldcdhello-worldnpmrunserve默认服务会监听localhost的8080端口,浏览器会访问http://localhost:8080你会看到Vue框架渲染的网页。注意,第一步执行vuecreatehello-world时,我们选择默认的Vue2。Vue3发布于2020年9月18日,我在使用Vue3时,后面生成示例代码的步骤报错。我们暂时使用Vue2。让Vue3飞一会儿吧。如果你没有用过Vue,请到官网[1]学习。使用VueApolloVueApollo[2]是一个三方库,允许您在Vue应用程序中使用GraphQL,并且非常易于使用。在上面和package.json同级的hello-world目录下,打开命令窗口执行:vueaddapollo这个命令会自动安装npm包:graphqlgraphql-tag@apollo/client。另外会询问是否生成代码,是否配置相关API,如下图:这里只能选择生成示例代码,其他选择否。生成示例代码的好处是我们不需要关心配置信息,可以专注于业务逻辑。生成示例代码后,我们首先修改配置文件,将graphql接口连接到Djangourl。即修改文件配置文件vue-apollo.js的httpEndpoint,修改后的httpEndpoint如下:consthttpEndpoint=process.env.VUE_APP_GRAPHQL_HTTP||'http://127.0.0.1:8000/graphql/'然后参考到hello-world/graphql目录下的其他文件,新建一个文件CookbookCategory.gql,内容是之前Django中的graphql查询语句,因为需要传入参数,这里封装了外层,不要请问为什么要这样写,这是apollo的规定嘛,我们只需要比较葫芦,如下:querycategoryByName($name:String!){categoryByName(name:$name){idnameingredients{idname}}}的下一步是让前端调用这个查询并显示数据。前端显示修改文件:hello-world/src/components/ApolloExample.vue删除多余部分,只保留一个文本框和显示数据部分,修改后的最终结果如下:查询菜谱类别