精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

我們一起為 Vue 配置 GraphQL API

開發 前端
用了 GraphQL ,前端需要哪一種數據格式可以自助實現,后端不需要再配合前端來修改接口,前后端分離更加徹底,這樣可以滿足前端頻繁的數據格式變化需求,大大提升了開發效率。今后做接口開發,能用 GraphQL 的,就不用 REST API。

[[402087]]

接前文為 Django 配備 GraphQL API,Django 提供 GraphQL 接口服務之后,我們需要讓前端來消費這些接口數據,以 Vue 為例,看一看前端如何訪問后端 GraphQL API。本文提供一個跑的通的 demo,可以先收藏,后面如有需要可以直接使用。

先創建一個 Vue 項目

執行下面的命令,就可以創建并啟動一個 Vue 的 hello-world 項目:

  1. vue create hello-world  
  2. cd hello-world 
  3. npm run serve 

默認情況下,服務將監聽 localhost 的 8080 端口,瀏覽器訪問 http://localhost:8080 就會看到 Vue 框架渲染的網頁。

注意第一步執行 vue create hello-world 時我們選擇默認的 Vue2, Vue3 是 2020 年 09 月 18 日發布的,我在使用 Vue3 時后面生成樣例代碼那一步報錯了,這里暫時用 Vue2 吧,讓 Vue3 再飛一會兒。

如果你還沒有用過 Vue,請去官方網站[1]學習一下。

使用 Vue Apollo

Vue Apollo[2] 是一個三方庫,可以讓你在 Vue 的應用中使用 GraphQL,使用起來也很輕松,在上述 hello-world 目錄下,也就是 package.json 同級的目錄下,打開命令窗口執行:

  1. vue add apollo 

這個命令會自動安裝 npm 包:graphql graphql-tag @apollo/client。除此之外會讓你選擇是否生成代碼,是否配置相關的 API,如下圖所示:

這里只選擇生成樣例代碼即可,其他都選否。生成樣例代碼的好處是我們不需要關心配置信息,集中精力放在業務邏輯即可。

生成樣例代碼后,我們先修改配置文件,將 graphql 的接口對接 Django 的 url。也就是修改文件配置文件 vue-apollo.js 的 httpEndpoint, 修改后的 httpEndpoint 如下所示:

  1. const httpEndpoint = process.env.VUE_APP_GRAPHQL_HTTP || 'http://127.0.0.1:8000/graphql/' 

然后參考 hello-world/graphql 目錄內的其他文件,新建文件 CookbookCategory.gql,內容就是之前 Django 里面的 graphql 的查詢語句,因為需要傳入參數,這里外層做了一下封裝,不要問為啥這樣寫,這是 apollo 規定好了的,我們只需要比葫蘆畫瓢,如下:

  1. query categoryByName($name: String!) { 
  2.   categoryByName(name: $name) { 
  3.     id 
  4.     name 
  5.     ingredients { 
  6.       id 
  7.       name 
  8.     } 
  9.   } 

接下來就是讓前端調用這個查詢,并展示數據了。

前端展示

修改文件:hello-world/src/components/ApolloExample.vue

刪除多余的部分,只保留一個文本框和展示數據的部分,修改后的最終結果如下所示:

  1. <template> 
  2.   <div class="apollo-example"
  3.     <!-- Cute tiny form --> 
  4.     <div class="form"
  5.       <label for="field-name" class="label">查詢菜譜分類</label> 
  6.       <input 
  7.         v-model="name" 
  8.         placeholder="請輸入菜譜名稱" 
  9.         class="input" 
  10.         id="field-name" 
  11.       > 
  12.     </div> 
  13.  
  14.     <!-- Apollo watched Graphql query --> 
  15.     <ApolloQuery 
  16.       :query="require('../graphql/CookbookCategory.gql')" 
  17.       :variables="{ name }" 
  18.  
  19.     > 
  20.       <template slot-scope="{ result: { loading, error, data } }"
  21.         <!-- Loading --> 
  22.         <div v-if="loading" class="loading apollo">Loading...</div> 
  23.  
  24.         <!-- Error --> 
  25.         <div v-else-if="error" class="error apollo">An error occured</div> 
  26.  
  27.         <!-- Result --> 
  28.         <div v-else-if="data" class="result apollo"
  29.           <vue-json-pretty :data="data" @click="handleClick"> </vue-json-pretty> 
  30.         </div> 
  31.  
  32.         <!-- No result --> 
  33.         <div v-else class="no-result apollo">No result :(</div> 
  34.       </template> 
  35.     </ApolloQuery> 
  36.  
  37.  
  38.   </div> 
  39. </template> 
  40.  
  41. <script> 
  42. import VueJsonPretty from 'vue-json-pretty'
  43. import 'vue-json-pretty/lib/styles.css'
  44. export default { 
  45.   components: { 
  46.     VueJsonPretty, 
  47.   }, 
  48.   data () { 
  49.     return { 
  50.       name'Dairy'
  51.       newMessage: ''
  52.     } 
  53.   }, 
  54.  
  55.   apollo: { 
  56.     files: FILES, 
  57.   }, 
  58.  
  59.   computed: { 
  60.     formValid () { 
  61.       return this.newMessage 
  62.     }, 
  63.   }, 
  64.  
  65.   methods: { 
  66.   }, 
  67. </script> 
  68.  
  69. <style scoped> 
  70. ...... 
  71. </style> 

 

 

 

這里為了讓返回的 json 數據格式更加好看,我這里用了插件:vue-json-pretty,只需要使用 npm install vue-json-pretty --save 安裝下,然后像上述代碼那樣導入:

  1. import VueJsonPretty from 'vue-json-pretty'
  2. import 'vue-json-pretty/lib/styles.css'

然后加入組件:

  1. export default
  2.   components: { 
  3.     VueJsonPretty, 
  4.   } 
  5.   ...... 

接下來就可以在 html 里面以標簽的形式使用了:

  1. <vue-json-pretty :data="data" @click="handleClick"> </vue-json-pretty> 
  2.        </div> 

 

 

 

確保 django 服務已啟動,現在重新執行下 npm run serve,瀏覽器的顯示如下所示:

由于搜索框有默認值 'Dairy' 因此顯示時已經查詢出了 Django 的數據。

改變搜索的菜譜分類名稱,可以看到結果立刻顯示:

到這里,我們已經實現了前端通過 GraphQL API 獲取后端數據的過程。

其實,Vue Apollo 還有很多功能,比如上傳文件。今天的介紹只是拋磚引玉,更多 Vue Apollo 功能請參考文末的官方鏈接。

可能遇到的問題

使用 Django API 最常見的問題就是跨域(CORS)問題,前端的錯誤提示可能是這樣的:

  1. Access to XMLHttpRequest at 'url’' from origin  has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. 

CORS (Cross-origin resource sharing) 就是跨域資源共享,django 的域是 localhost:8000,而 Vue 的域是 localhost:8080,他們是兩個不同的域,只要不是 localhost:8000 發過來的請求,Django 都會阻止。

現在讓我們來解決這一問題:

安裝

  1. pip install django-cors-headers 

配置 setting.py

  • INSTALLED_APPS 內添加 "corsheaders",
  • MIDDLEWARE 內添加 'corsheaders.middleware.CorsMiddleware',
  • setting.py 末尾添加 CORS_ORIGIN_ALLOW_ALL = True

運行

  1. python manage.py runserver 

另外,如果 django 輸出:

說明可能遇到了 django cors 錯誤,按照上面的方法解決即可。

總結

用了 GraphQL ,前端需要哪一種數據格式可以自助實現,后端不需要再配合前端來修改接口,前后端分離更加徹底,這樣可以滿足前端頻繁的數據格式變化需求,大大提升了開發效率。今后做接口開發,能用 GraphQL 的,就不用 REST API。

本文代碼地址:https://gitee.com/somenzz/hello-world.git[3]

參考資料

[1]官方網站: https://cn.vuejs.org/index.html

[2]Vue Apollo: https://v4.apollo.vuejs.org/

[3]https://gitee.com/somenzz/hello-world.git: https://gitee.com/somenzz/hello-world.git

本文轉載自微信公眾號「Python七號」,可以通過以下二維碼關注。轉載本文請聯系Python七號公眾號。

 

 

責任編輯:武曉燕 來源: Python七號
相關推薦

2023-04-11 07:43:32

PostmanGraphQL查詢。

2022-05-24 08:21:16

數據安全API

2023-11-10 08:04:43

Java 17Java 11JDK

2024-11-27 08:47:12

2025-03-17 11:21:08

APISwagger界面

2024-06-12 09:52:00

2025-04-08 00:16:07

2024-10-15 08:08:13

2024-02-20 21:34:16

循環GolangGo

2021-08-27 07:06:10

IOJava抽象

2021-12-29 08:27:05

ByteBuffer磁盤服務器

2022-01-17 06:59:40

Grep指令linux

2021-07-28 07:53:20

Github ActiDotnet 應用

2022-03-08 17:52:58

TCP格式IP

2022-03-31 18:59:43

數據庫InnoDBMySQL

2023-06-30 08:18:51

敏捷開發模式

2023-08-10 08:28:46

網絡編程通信

2023-08-04 08:20:56

DockerfileDocker工具

2023-09-10 21:42:31

2022-10-18 07:33:57

Maven構建工具
點贊
收藏

51CTO技術棧公眾號

一区二区三区播放| 亚洲在线不卡| 日本一区二区欧美| 亚洲经典视频| 亚洲国产成人av网| 国产精品一区二区女厕厕| 日韩精品电影一区二区| 伦一区二区三区中文字幕v亚洲| 欧美国产激情二区三区| 亚洲中国色老太| 久久久久亚洲av成人片| 日韩欧美中文字幕一区二区三区| 国产精品久久久久久久久免费樱桃| 成人午夜在线观看| 欧美精品一级片| 亚洲婷婷丁香| 91精品在线观看入口| www.激情网| 狠狠v欧美ⅴ日韩v亚洲v大胸| 夜夜嗨网站十八久久| 色偷偷综合社区| 国产女主播在线播放| 国产精品186在线观看在线播放| 久久久久久一级片| 成人免费观看a| 久草免费新视频| 91蜜臀精品国产自偷在线| 亚洲精选一区二区| 成人做爰www看视频软件| va天堂va亚洲va影视| 色婷婷亚洲婷婷| 日韩成人午夜影院| 国模吧精品人体gogo| av亚洲精华国产精华| 91麻豆国产精品| 一二三四区在线| 日韩激情视频网站| 日本视频久久久| 国产精品久久久久久久久久久久久久久久久 | 欧美日本一区二区在线观看| 黄色一级在线视频| 免费污视频在线观看| 伊人一区二区三区| 影音先锋成人资源网站| 成人精品一区二区三区免费| 成人av网站免费| 国产伦精品一区二区三区在线| 国产又粗又猛视频| 国产在线麻豆精品观看| 日韩av电影在线网| 精品人妻一区二区三区潮喷在线 | 午夜免费一级片| 日本精品网站| 欧美在线一二三四区| 日韩免费一级视频| 涩涩av在线| 欧美色图在线视频| 日韩伦理在线免费观看| zzzwww在线看片免费| 亚洲午夜一区二区| 国产毛片视频网站| 东京一区二区| 色播五月激情综合网| 日韩中文字幕免费在线| 成人激情综合| 色一情一伦一子一伦一区| 日韩在线一级片| 国产日韩另类视频一区| 欧美视频在线一区二区三区| 色戒在线免费观看| 欧美影院在线| 亚洲国产一区二区三区在线观看 | 国产欧美一区二区三区鸳鸯浴| 欧美视频小说| 久cao在线| 一区二区三区美女| 亚洲人成无码网站久久99热国产| 中文一区一区三区高中清不卡免费| 欧美日韩一区二区三区| 成年人在线看片| 亚洲国产aⅴ精品一区二区三区| 日韩三级在线观看| 少妇被狂c下部羞羞漫画| 一区二区三区日本久久久| 一本一本久久a久久精品牛牛影视| 国精产品一区一区三区免费视频| 日韩1区在线| 美日韩精品免费观看视频| 黄色一级片在线免费观看| 日韩视频三区| 91精品国产自产在线| 黄色一级a毛片| 久久欧美一区二区| 青青在线免费视频| 牛牛精品一区二区| 91精品国产综合久久婷婷香蕉| 国产不卡一二三| 亚洲婷婷丁香| 亚洲国产成人精品久久久国产成人一区| 最新中文字幕视频| 国产精品久久久久久久免费观看 | 日韩激情综合网| 亚洲精品在线二区| 国产专区欧美专区| 日本福利片在线| 中文子幕无线码一区tr| 91免费黄视频| 天天综合91| 亚洲美女精品成人在线视频| 欧美精品99久久久| 久久精品国产亚洲aⅴ| 国产一区精品视频| a在线免费观看| 色婷婷久久久综合中文字幕| 女女调教被c哭捆绑喷水百合| 色棕色天天综合网| 欧美国产视频一区二区| 在线观看黄色网| 久久综合九色综合欧美亚洲| www.日本三级| 国产免费av国片精品草莓男男| 亚洲欧美日韩一区二区在线| 久久精品国产亚洲av香蕉| 日本不卡在线视频| 久久久久久久久久久久久久一区| dy888亚洲精品一区二区三区| 欧美性色aⅴ视频一区日韩精品| 黄色性生活一级片| 91高清一区| 韩国三级电影久久久久久| 国产男女裸体做爰爽爽| 欧美国产精品一区| 看欧美ab黄色大片视频免费| 老司机精品在线| 欧美激情精品久久久久| 瑟瑟视频在线免费观看| 成人永久免费视频| 特级西西444| 精品一区91| 中文字幕亚洲综合| 少妇又紧又色又爽又刺激视频| 久久一二三国产| 欧美三级一级片| 午夜先锋成人动漫在线| 在线播放日韩欧美| 亚洲一区 中文字幕| 国产精品色眯眯| 日本黄色福利视频| 天天天综合网| 91久久国产精品| 最新av在线播放| 欧美日高清视频| 纪美影视在线观看电视版使用方法| 欧美日韩p片| 成人午夜激情免费视频| 中文字幕在线观看网站| 欧美mv日韩mv亚洲| 国产成人免费在线观看视频| 久久精品观看| 日韩激情久久| 欧美xxxx做受欧美护士| 亚洲一级一级97网| 国产精品第5页| 久久久久国产一区二区三区四区| 国产精品无码免费专区午夜| 国产精品原创视频| 久久国产色av| 高清一区二区三区四区| 亚洲精品日产精品乱码不卡| 一级少妇精品久久久久久久| 亚洲人体偷拍| 欧美自拍资源在线| 精品女同一区二区三区在线观看| 在线播放国产一区二区三区| 精品久久无码中文字幕| 精品国产福利在线| 国产精品www爽爽爽| 理论片日本一区| 国产精品一二三在线观看| 老司机成人在线| 国产精品专区一| 污网站在线免费看| 国产视频综合在线| 91麻豆成人精品国产免费网站| 中文字幕亚洲一区二区va在线| 国产精品999.| 香蕉成人久久| 玖玖精品在线视频| 中文字幕av一区二区三区四区| 97视频com| 午夜精品一区| 国产视频久久久久| 99久久精品免费看国产交换| 午夜激情综合网| 波多野结衣一本| 国产成人丝袜美腿| 日日碰狠狠躁久久躁婷婷| 欧美大片一区| 久久综合九色综合久99| 欧洲成人一区| 欧美激情亚洲视频| 国产香蕉视频在线看| 日韩亚洲电影在线| 国产精品视频123| 亚洲日本丝袜连裤袜办公室| 国产美女免费网站| 成人18精品视频| 五月天婷婷在线观看视频| 性欧美videos另类喷潮| 成年人视频大全| 色小子综合网| 青青草成人网| 亚洲精华一区二区三区| yellow视频在线观看一区二区| 日本欧美一区| 91精品国产自产91精品| 在线观看三级视频| 久久精品国产电影| yiren22综合网成人| 日韩二区三区在线| 国产综合视频在线| 欧美一区二区三区播放老司机| 日日夜夜操视频| 亚洲va欧美va天堂v国产综合| 日韩欧美123区| 亚洲婷婷综合色高清在线| 伊人网综合视频| 不卡的av在线| 国产69视频在线观看| 麻豆精品视频在线观看| 日韩精品免费播放| 欧美久色视频| 天天干天天色天天爽| 国产高清一区| 亚洲一区二区三区乱码| 精品视频网站| 午夜精品区一区二区三| 日本精品黄色| 亚洲午夜精品久久久久久浪潮| 伊人春色之综合网| 欧美另类网站| 色婷婷久久久| 久久久久一区二区三区| 色天下一区二区三区| 久久久久久艹| 久久av超碰| 日韩偷拍一区二区| 区一区二视频| 精品久久免费观看| 亚洲一级淫片| 日韩中文在线字幕| 91精品一区二区三区综合在线爱 | 欧美另类高清videos的特点| 日本精品一区二区三区四区的功能| 国产情侣在线视频| 黑人巨大精品欧美一区免费视频| 亚洲熟女综合色一区二区三区| 亚洲香肠在线观看| 麻豆精品久久久久久久99蜜桃| 洋洋成人永久网站入口| 国产情侣在线视频| 欧美综合色免费| 91精品国产色综合久久不8| 91麻豆精品国产91久久久久久久久 | 欧美亚洲精品在线观看| 亚洲国产欧美在线成人app | 久久无码高潮喷水| 日韩成人免费电影| 天天色天天综合网| 国产成人精品亚洲日本在线桃色 | 精品视频久久久久| 欧美日韩国产一区在线| 亚洲午夜无码久久久久| 欧美性色黄大片手机版| 国产精品探花视频| 日韩精品一区二区三区老鸭窝| 国产女人爽到高潮a毛片| 欧美日韩国产综合一区二区| 国产无遮挡又黄又爽又色视频| 欧美疯狂性受xxxxx喷水图片| www.亚洲天堂.com| 日韩精品视频在线观看网址| 福利成人在线观看| 九色成人免费视频| 日本免费一区二区六区| 国产拍精品一二三| 欧美一级一片| 亚洲成人网上| 亚洲天堂成人| 免费午夜视频在线观看| 国产精品香蕉一区二区三区| 欧美一级片黄色| 国产精品久久久久久久久晋中 | 91日韩精品视频| a在线播放不卡| 国内毛片毛片毛片毛片毛片| 亚洲电影激情视频网站| 在线观看视频二区| 日韩电影中文 亚洲精品乱码| av香蕉成人| 国产xxx69麻豆国语对白| 亚洲伊人影院| 在线观看福利一区| 首页亚洲欧美制服丝腿| 污污网站在线观看视频| 久久久久99精品一区| 国产一卡二卡在线播放| 3atv在线一区二区三区| 国产一级片在线播放| 操91在线视频| 欧美久久久网站| 欧美亚洲一级二级| 一区福利视频| 一级黄色大片儿| 国产精品视频一二| 亚洲国产成人无码av在线| 亚洲精品在线免费观看视频| 最新电影电视剧在线观看免费观看| 欧美国产中文字幕| 成人在线视频国产| 日韩精品欧美在线| 国产精品久久777777毛茸茸 | 色综合天天综合网国产成人网| 免费一二一二在线视频| 国产精品v欧美精品∨日韩| 91精品啪在线观看国产手机| 精品日韩在线播放| 日本不卡一区二区三区| 亚洲精品国产91| 狠狠综合久久av一区二区小说| 丰满少妇一级片| 欧美成人激情在线| 99久久久国产| 三年中文高清在线观看第6集| 免费精品视频在线| 在线免费看黄视频| 一本大道久久a久久精品综合| 天堂成人在线观看| 性色av一区二区三区免费| 在线精品国产亚洲| 欧美精品卡一卡二| 国产99一区视频免费| 久久久久久久蜜桃| 精品国产伦理网| 高潮在线视频| 久久成人资源| 尤物网精品视频| 又黄又爽的网站| 欧美性猛交xxxx免费看漫画| 免费一级在线观看播放网址| 2019精品视频| 要久久爱电视剧全集完整观看| av免费观看网| 久久婷婷色综合| 免费无码国产精品| 亚洲欧美日韩中文视频| 亚洲www啪成人一区二区| 亚洲精品视频一区二区三区| 麻豆免费看一区二区三区| 国产高清视频免费在线观看| 欧美一区二区免费视频| 免费在线播放电影| 久久精品国产一区二区三区日韩| 国产精品外国| 亚洲毛片亚洲毛片亚洲毛片| 欧美中文字幕一二三区视频| 国产在线1区| 国产中文字幕日韩| 国产综合精品| 国产草草浮力影院| 欧美性猛交xxxx久久久| 毛片在线播放a| 国产精品国产精品| 每日更新成人在线视频| 亚洲一二三四视频| 欧美成人vps| 日韩精品三区| 亚洲天堂第一区| 91网站视频在线观看| 在线观看亚洲一区二区| 欧美黄色小视频| 欧美综合另类| 男男一级淫片免费播放| 欧美性极品xxxx娇小| 国产福利在线播放麻豆| 国产精品自拍首页| 美腿丝袜一区二区三区| 久久久99精品| 中文字幕欧美视频在线| 国产精品tv| 手机免费看av网站| 欧美色欧美亚洲高清在线视频| av小次郎在线| 日韩中文字幕一区| 成人激情小说网站| 亚洲一区中文字幕在线| 69视频在线免费观看| 午夜激情久久| 国产精品成人一区二区三区电影毛片 | 91丝袜国产在线播放|