精品欧美一区二区三区在线观看 _久久久久国色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| 日本免费一区二区三区四区| 国产欧美日韩在线| 成人免费淫片视频软件| 免费人成在线观看| 久久众筹精品私拍模特| 欧美剧情片在线观看| www.99riav| 青青草免费在线| 久久99精品久久只有精品| 久久久久五月天| 综合 欧美 亚洲日本| 91麻豆精品激情在线观看最新 | 麻豆一区二区三区在线观看| 视频一区二区免费| 国产麻豆精品一区二区| 国产成人一区二区| 国产精品日日夜夜| 亚洲乱码在线| 国产一区二区三区在线观看网站| 欧美69精品久久久久久不卡| 777午夜精品电影免费看| 亚洲午夜久久久久久久久电影院| 亚洲精品无人区| 日韩av资源站| 99久久精品免费看国产| 91免费看国产| 亚洲av人无码激艳猛片服务器| 欧美理论在线| 精品国产一区二区在线| 91成人破解版| 亚洲va久久| 欧美精品一区二区三区蜜臀| 五月天丁香花婷婷| 欧美日韩成人影院| 欧美午夜美女看片| 国模无码视频一区二区三区| 毛片在线导航| 一区二区三区加勒比av| 中文字幕一区二区三区四区五区人| 每日更新在线观看av| av动漫一区二区| 国产精品久久亚洲| 亚洲AV无码一区二区三区性| 久久精品72免费观看| 国产999精品久久久| 美日韩一二三区| 中文精品在线| 91高潮在线观看| 国产成人无码精品| 亚洲深夜av| 91av视频在线| 中文字幕黄色片| 可以看av的网站久久看| 国产激情999| 久久精品偷拍视频| 青青草视频一区| 国产精品网站入口| 97超碰人人模人人人爽人人爱| 日本不卡视频一二三区| 国产美女搞久久| 国产精品嫩草影院精东| 国产一区二区免费看| 亚洲在线观看视频| 亚洲黄色在线观看视频| 99久久综合国产精品| 好吊色欧美一区二区三区 | 成人午夜免费在线视频| 丰满大乳少妇在线观看网站| 亚洲成人一区二区| 无码播放一区二区三区| 国产经典一区| 91麻豆精品国产91久久久久久久久 | 老司机精品视频网站| 国产福利视频一区二区| 97人妻精品一区二区三区| 国产一区二区美女诱惑| 岛国视频一区| 国产小视频免费在线网址| 中文av字幕一区| a级片一区二区| 最近在线中文字幕| 欧美精品 国产精品| 成熟妇人a片免费看网站| 亚洲精品亚洲人成在线观看| 在线电影欧美日韩一区二区私密| 成人免费精品动漫网站| 99视频精品| 国产精品羞羞答答| 成人午夜免费在线观看| 久久精品人人做人人综合| 日本丰满大乳奶| 深夜在线视频| 91精品国产一区二区人妖| 亚洲图片综合网| 日韩久久电影| 97视频免费看| 一级特黄录像免费看| www.久久精品| 中文字幕中文字幕99| zzzwww在线看片免费| 欧美日韩精品欧美日韩精品一 | 亚洲综合区在线| 日韩精品一区中文字幕| 91精品导航| 中文字幕日韩综合av| 久久一二三四区| 久久精品国产精品青草| 农村寡妇一区二区三区| 欧美人与牲禽动交com| 欧美亚洲国产怡红院影院| 台湾佬美性中文| 日韩精品dvd| 日本欧美中文字幕| 成人免费视频国产免费麻豆| 中文字幕中文字幕一区二区| 成人综合视频在线| 91精品国产自产精品男人的天堂| 影音先锋欧美精品| 国产亚洲小视频| 国产在线视频不卡二| 日韩和欧美的一区二区| 国产夫妻在线播放| 日韩欧美在线一区二区三区| 69精品无码成人久久久久久| 国产精品一区毛片| 国产精品一区二区av| a级片国产精品自在拍在线播放| 欧洲中文字幕精品| 国产熟妇久久777777| 亚洲精品极品| 国产精品久久久久久久久久直播| 久久精品视频观看| 欧美日韩国产中文| 九九热免费在线| 视频一区视频二区在线观看| 欧美13一14另类| 大胆人体一区二区| 日韩成人在线播放| 日韩av片在线播放| 92国产精品观看| 久久综合九色综合88i| 免费看成人人体视频| 久久久久国产精品免费网站| 国产高清免费av| 亚洲乱码精品一二三四区日韩在线| 奇米影视四色在线| 日韩在线综合| 成人妇女淫片aaaa视频| 国产激情小视频在线| 8x8x8国产精品| 99视频只有精品| 国产91高潮流白浆在线麻豆| www婷婷av久久久影片| 136导航精品福利| 国模视频一区二区三区| 香蕉久久国产av一区二区| 欧美日韩国产丝袜美女| 亚洲第一香蕉网| 日韩电影网1区2区| 特级毛片在线免费观看| 2020最新国产精品| 2019中文字幕在线| 国产视频精选在线| 在线成人av网站| 久久久久97国产| 91免费国产在线| 丰满少妇在线观看| 亚洲香蕉av| 国语精品免费视频| 91国拍精品国产粉嫩亚洲一区| 日日狠狠久久偷偷四色综合免费| 国产理论视频在线观看| 亚洲国产日韩精品| 久久精品国产亚洲av久| 久久精品国产秦先生| 日韩激情视频一区二区| 九九亚洲精品| 成人性教育视频在线观看| 久久www人成免费看片中文| 亚洲精品国产精品乱码不99按摩 | 亚欧视频在线观看| 国产无人区一区二区三区| 爱豆国产剧免费观看大全剧苏畅| 狠狠入ady亚洲精品经典电影| 免费亚洲精品视频| 久久视频免费| 青青草精品毛片| 26uuu亚洲电影在线观看| 亚洲黄页网在线观看| 又污又黄的网站| 午夜电影一区二区| 天堂а√在线中文在线鲁大师| 成人aa视频在线观看| 欧美特级aaa| 亚洲区欧美区| 国产高清免费在线| 自拍视频一区| 99在线高清视频在线播放| 欧洲精品一区二区三区| 欧美猛男性生活免费| 粉嫩av一区| 亚洲精品456在线播放狼人| 91精品国产乱码久久| 黑人巨大精品欧美一区二区一视频 | 国产又大又硬又粗| 欧美黄色大片网站| 五月天亚洲综合情| 日韩超碰人人爽人人做人人添| 91免费精品国偷自产在线| 日韩欧美精品电影| 97色在线视频| 女同视频在线观看| 久久天天躁狠狠躁老女人| 黄上黄在线观看| 亚洲激情视频在线| 精品国产999久久久免费| 欧美综合久久久| 国产成人综合欧美精品久久| 一区二区欧美国产| 三级黄色片在线观看| 久久久91精品国产一区二区三区| 在线精品视频播放| 国产成人免费视频精品含羞草妖精| 少妇网站在线观看| 日韩国产欧美在线观看| 久久久免费视频网站| 在线看片成人| 一卡二卡三卡视频| 亚洲香蕉网站| 免费高清一区二区三区| 欧美私人啪啪vps| 中文字幕第50页| 一区二区免费不卡在线| 亚洲一区二区三区精品动漫| 精品国产成人| 亚欧精品在线| 日本一区二区高清不卡| 亚洲高清视频一区二区| 成人精品影视| 亚洲一区不卡在线| 7777久久香蕉成人影院| 大桥未久一区二区三区| 欧美精品一卡| 人体内射精一区二区三区| 日韩视频中文| 尤物av无码色av无码| 国产视频一区在线观看一区免费| 午夜精品久久久久久久无码| 免费在线亚洲欧美| 男女av免费观看| 日本中文字幕一区二区视频| 亚洲国产精品三区| 久久成人18免费观看| 国产九九九视频| 成人中文字幕在线| 成人手机在线免费视频| 国产亚洲欧美一区在线观看| 国产三级短视频| 亚洲日本韩国一区| 国产在线视频二区| 色综合天天综合网国产成人综合天| 狠狠人妻久久久久久综合| 在线观看不卡一区| 国产毛片毛片毛片毛片| 精品国产99国产精品| 天堂a√中文在线| 最好看的2019年中文视频| 中国av在线播放| 91成人在线播放| 日本免费一区二区三区等视频| 91免费欧美精品| 伊人春色之综合网| 久久久一二三四| 国产欧美日韩一级| 中文字幕在线视频精品| 成人午夜免费视频| 蜜臀久久99精品久久久久久| |精品福利一区二区三区| 久久成人国产精品入口| 一本大道综合伊人精品热热| 一区二区国产欧美| 亚洲第一av在线| 天堂аⅴ在线地址8| 欧美黑人巨大xxx极品| 第84页国产精品| 91久久国产自产拍夜夜嗨| 亚洲盗摄视频| 9色视频在线观看| 日韩国产欧美三级| 黑森林av导航| 国产精品二三区| 欧美精品二区三区| 日韩视频永久免费| а√天堂中文在线资源bt在线 | 精品欧美一区二区三区在线观看| 亚洲精品免费av| 精品久久久久久久久久久下田 | 9999热视频在线观看| 国产精品视频成人| 日本一区福利在线| 麻豆视频传媒入口| 日本在线不卡视频| 亚洲一区二区三区无码久久| 亚洲欧洲日产国产综合网| 手机看片久久久| 精品粉嫩超白一线天av| 免费观看成人高潮| 国产精品久久视频| 欧美一级二级三级视频| 男人添女人下部视频免费| 美女视频黄免费的久久| av在线网站观看| 亚洲成人激情综合网| aaa级黄色片| 久久国内精品一国内精品| 日韩免费小视频| 免费电影一区| 亚洲一区成人| 国产性生活毛片| 亚洲午夜影视影院在线观看| 国产麻豆免费视频| 久久韩国免费视频| 欧美成人一二区| 亚洲精品视频一区二区三区| 久久精品一区二区国产| 一区二区三区少妇| 午夜欧美大尺度福利影院在线看| 国产高清视频免费| 久久亚洲精品成人| 91麻豆精品一二三区在线| 亚洲欧美日韩另类精品一区二区三区 | 国产激情视频在线| 91九色视频导航| 四季av在线一区二区三区| 九九视频精品在线观看| 久久九九全国免费| 无码人妻黑人中文字幕| 亚洲天堂成人在线| 亚洲第一会所001| 日韩资源av在线| 青青草成人在线观看| www..com.cn蕾丝视频在线观看免费版 | av一区二区三区免费观看| 国产成人精品aa毛片| 校园春色 亚洲| 亚洲白虎美女被爆操| 2021中文字幕在线| 久久久人人爽| 首页综合国产亚洲丝袜| 免费看裸体网站| 欧美日本一道本在线视频| 久久日韩视频| 国产精品theporn88| 中国女人久久久| 亚洲a v网站| 欧美久久一二三四区| 1024在线播放| 精品一区二区三区自拍图片区 | 国产三级生活片| 一区二区国产视频| 五月婷婷综合久久| 国产精品久久久999| 久久久国产精品| 日本在线不卡一区二区| 色婷婷综合久久久中文一区二区| 成人h小游戏| 91九色偷拍| 亚洲一区二区三区高清不卡| 国产毛片欧美毛片久久久| 91精品婷婷国产综合久久竹菊| 黄色成人在线网| 青青草成人激情在线| 久久成人免费网站| 国产在线视频卡一卡二| 亚洲网站在线播放| japansex久久高清精品| 尤物av无码色av无码| 国产精品免费视频一区| 性欧美videos另类hd| 清纯唯美日韩制服另类| 在线成人激情| www.久久国产| 日韩欧美高清在线| 人人视频精品| 特级西西人体www高清大胆| 久久久天堂av| www天堂在线| 国产精品美女久久久免费| 欧美一区不卡| 久久久久无码精品国产sm果冻| 555www色欧美视频| 92国产精品| 欧美一区二区三区综合| 中文字幕av不卡| 无码精品人妻一区二区三区影院| 91精品久久久久久久久久久| 夜夜夜久久久| 私库av在线播放|