Soft_Job 板


LINE

來聊個簡單的議題? 『為什麼要學 GraphQL?』 部落格好讀版: https://bit.ly/why-is-graphql 身為網站工程師,您不能不知道什麼是 GraphQL,這是一個前端跟後端溝通的 API Query 語法,大幅改善了前後端的合作模式,這篇會跟大家介紹為什麼麼要學 GraphQL, 以及整理出三大 GraphQL 優勢,讓大家了解跟傳統 Restful API 有什麼不同。當然不是 叫開發者捨棄 Restful API,而是根據專案的不同,來決定不同的技術 Stack。像是服務 跟服務之前您說要用 GraphQL,肯定被打槍,而是要用更輕量的 Restful API 或 GRPC。 好了,底下來說明三點 GraphQL 的優勢。 影片: https://www.youtube.com/watch?v=00NKSvAraLQ
01:36 一次連線拿回前端所需資料 04:07 根據不同畫面拿不同欄位資料 06:06 即時 API 文件 1. 一次連線拿回前端所需資料 GraphQL 可以直接將 Query 語法寫在一起送到後端,後端全部處理完成後再一次回給前 端,大幅降低 connection 次數。 2. 根據不同畫面拿不同欄位資料 在 Restful API 世界裡,後端會一次回傳所有資料,不會管前端需不需要這欄位,也就 是前端沒有權力決定該拿什麼欄位,這樣會造成很多不必要的網路傳輸。Restful API 也可以根據不同畫面回不同的欄位資訊,卻造成後端很大的負擔。這時候用 GraphQL 解 決了此問題,只要在 Query 語法內定義好要拿的資料即可。 3. 即時 API 文件 大家應該都知道文件沒有一天是即時更新的,寫 Restful API 要求後端也補上文件,簡 直是難上加難,專案在趕的時候,誰還在管文件有沒有到最新,這邊就要推薦 GraphQL 了,因為只要程式碼一動,開發者透過 Client 工具就可以即時知道現在的 API 文件。 -- Go 教學: https://www.udemy.com/course/golang-fight/?couponCode=202006 Drone 教學: https://www.udemy.com/course/devops-oneday/?couponCode=202006 Docker 教學: https://www.udemy.com/course/docker-practice/?couponCode=202006 --



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.25.183.202 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Soft_Job/M.1592635061.A.A78.html
1F:噓 hegemon: 廣告文又來了 06/20 14:59
2F:噓 hegemon: 除了第一點以外其他兩項REST也做得到 06/20 15:01
3F:推 lerdor: 針對第一點詢問一下,這個成立的條件是在query的input相同 06/20 15:06
4F:→ lerdor: ? 06/20 15:06
5F:推 sp063439: 推推 06/20 15:24
6F:推 shingatter: 同問第一題 06/20 15:41
7F:→ mystery7631: 怎麼沒說graphQL文件和規則像大便 06/20 15:59
8F:→ jobintan: 當初因為玩Gatsby.JS,所以順道學了GrapghQL。 06/20 16:26
9F:→ appleboy46: @lerdor 你可以把多個 query 語法寫在一起 06/20 16:29
10F:→ appleboy46: blog 裡面有範例,可以參考看看,就大概知道了 06/20 16:29
11F:→ appleboy46: @mystery7631 也不是沒遇過雷 XD 06/20 16:30
12F:推 stupid0319: 還是傳統md檔最好用 06/20 16:39
13F:噓 ray9592197: 不覺得graph那麼神,黑名單白名單訂一訂就訂死你 06/20 16:57
14F:→ BlacksPig: 沒辦法做conn pool? 06/20 18:00
15F:推 s06yji3: 小弟不才,REST API有辦法做conn pool 嗎? 06/20 18:05
16F:→ appleboy46: https://bit.ly/2BoW4VU 06/20 18:08
17F:→ roccqqck: 這是宗教問題 06/20 18:35
18F:→ askaleroux: Swagger配Rest不行嗎? 06/20 19:55
19F:→ bheegrl: query語法送到後端啊...聽起來就很雷的感覺 06/20 20:22
20F:→ bheegrl: https://ithelp.ithome.com.tw/articles/10208008 06/20 20:23
21F:→ bheegrl: 沒用好就injection吃到飽 06/20 20:24
22F:→ x000032001: swagger跟graphql就相當於手動更新和自動更新 06/20 20:24
23F:→ appleboy46: Size Limiting, Query Whitelisting, Depth Limiting 06/20 20:34
24F:→ appleboy46: 這些都是需要自己再額外控制,增加 GraphQL 安全性 .. 06/20 20:34
25F:噓 sharku: 為何不直接寫後端 06/20 21:18
26F:→ sharku: swagger可以隨code更新 難道你還手動維護 json or yml? 06/20 21:19
27F:→ xlf: 同意前面說的 實在很難做auth 06/20 21:55
28F:→ x000032001: 你還是要用codegen做 而graphql可以直接查schema 06/20 22:02
29F:→ x000032001: 真妙 推文都在守著RESTful 沒人想討論graph帶來的可能 06/20 22:05
30F:推 s24601: 請問swagger怎麼隨code更新 06/20 22:10
31F:→ sharku: 本文123點都不是graphql特有的優點 想推廣也不是用這些 06/20 22:10
32F:推 zeroshine: 官網特色就說得夠清楚了 https://graphql.org/ 06/20 22:22
33F:→ zeroshine: 原 po 也沒有說錯啊 不知道大家在砲轟什麼 06/20 22:23
34F:推 a8989332: 文人相輕的日常 06/20 22:24
35F:→ zeroshine: graphql 真的讓串 api 的複用變得相當的簡單 06/20 22:25
36F:推 okd: 推一個 有內容可以討論 不太明白在噓什麼 06/20 22:25
37F:→ zeroshine: 甚至在 react apollo 的幫助下 整個 component 裝下去 06/20 22:26
38F:→ zeroshine: 資料也會順便拉好 06/20 22:26
39F:→ zeroshine: 後端工程師懶得幫你做資料轉換 過濾 都可以讓你在 gql 06/20 22:28
40F:→ zeroshine: 上做好 06/20 22:28
41F:推 zeroshine: 甚至可以用 directive 讓這些邏輯應用在各個欄位上 06/20 22:30
42F:→ sharku: 像樓上幾位提的幾點還比較有推廣到 06/20 22:54
43F:推 sojoasd: GraphQL 針對 query 來說,考量拿到什麼欄位,這倒是小 06/21 00:27
44F:→ sojoasd: 事,比較要注意的是欄位往下延伸時,有沒有使用 dataload 06/21 00:27
45F:→ sojoasd: er 協助處理,否則db 查詢會搞爆 server 06/21 00:27
46F:噓 SIMD: 誰沒文件在開發,先討論好文件才開發吧 06/21 00:44
47F:→ jinmin88: swagger表示 我被當塑膠 06/21 01:36
48F:噓 bibo9901: GraphQL就相當把後端結構完全洩漏給前端 06/21 05:48
49F:→ Starcraft2: https://reurl.cc/z8GOQk 還是要看實際應用和需求 06/21 06:48
50F:推 knives: graphql就是垃圾,就是個前端很爽,後端很幹的概念 06/21 07:24
51F:推 b85040312: 後端為什麼很幹 06/21 10:02
52F:推 mychiux413: 我用Go+GraphQL+Apollo(TS),用了就回不去了 06/21 11:48
53F:→ appleboy46: @knives 什麼是後端很幹的概念? 06/21 11:48
54F:噓 bibo9901: GraphQL和直接開SQL給前端有什麼本質上的差別? 06/21 15:00
55F:→ bibo9901: 完全失去封裝的意義. 06/21 15:00
56F:→ lerdor: 我想詢問的是第一點下,若要組裝A跟B的query但是他們的inp 06/21 15:29
57F:→ lerdor: ut也分別是C跟D還可以成立嗎? 06/21 15:29
58F:→ neo5277: 就後端多一層就好了 06/21 15:31
59F:→ appleboy46: @lerdor 可以吧,所有的 Query 都由 Client 自行組裝 06/21 15:36
60F:推 zeroshine: 例如說電商的商品資料在 mobile view 可能只需要 a b c 06/21 16:40
61F:→ zeroshine: 欄位 在 desktop web 下可能會需要 b c d e f 欄位 06/21 16:40
62F:→ zeroshine: graphql 就提供 quary language 讓開發者可以 specify 06/21 16:41
63F:→ zeroshine: 所需要的資料欄位 而不會有 over fetch 的問題 06/21 16:42
64F:→ zeroshine: 也不需要讓後端為各個不同的需求寫不同的 end point 06/21 16:42
65F:推 zeroshine: 的確 restful 可以利用帶參數來完成這種需求 但這就需 06/21 16:45
66F:→ zeroshine: 要工程師自己弄 也沒有 graqhql 的 query 來的容易 06/21 16:46
67F:→ DendiQ: 不懂為啥說GraphQL跟直接開SQL給前端一樣 06/21 16:47
68F:推 jaspreme206: 不懂GQL 的優勢 還出來帶風向 推文水準差矣 06/21 18:35
69F:→ paint: 最近有用 GraphQL 真心好用 06/21 20:48
70F:→ PretenderY: GraphQL最大的特點就是單一的Endpoint跟Type system 06/21 21:48
71F:→ dreamnook: 同樣不懂哪裡跟直接開SQL給前端相同 06/22 00:00
72F:推 marc47: 推用心整理 06/23 00:43
73F:推 vacuum: 大概是怕學新技術的老人看了很氣 06/23 15:36
74F:推 lestibournes: 推,等等消化一下xD 06/24 22:20
75F:→ rodion: 剛看了下 可以說GraphQL非但沒有破壞封裝 反而是增加新的 06/29 10:58
76F:→ rodion: 封裝 是說 GraphQL是對後端SQL(或其他DB)的封裝 06/29 10:58
77F:→ rodion: 也因此 若應用於不適合的情景 可能會有過度封裝/增加不必 06/29 10:59
78F:→ rodion: 要複雜度之虞 06/29 10:59
79F:→ rodion: 或許可以這樣說 已經簡單易懂夠高效的RestAPI 改成GraphQL 06/29 11:01
80F:→ rodion: 是沒啥意義的事情 甚至作繭自縛 06/29 11:01







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:BuyTogether站內搜尋

TOP