自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

GraphQL 為什么火不起來(lái)?這么多年了

開(kāi)發(fā) 后端
很多公司的后端使用了 GraphQL 來(lái)代替之前的 Restful 接口風(fēng)格,那么為啥呢?GraphQL 到底有什么優(yōu)勢(shì),值得這些公司去使用呢?

GraphQL 是啥?

官方介紹:GraphQL 既是一種用于 API 的查詢(xún)語(yǔ)言也是一個(gè)滿足你數(shù)據(jù)查詢(xún)的運(yùn)行時(shí)。GraphQL 對(duì)你的 API 中的數(shù)據(jù)提供了一套易于理解的完整描述,使得客戶(hù)端能夠準(zhǔn)確地獲得它需要的數(shù)據(jù),而且沒(méi)有任何冗余,也讓 API 更容易地隨著時(shí)間推移而演進(jìn),還能用于構(gòu)建強(qiáng)大的開(kāi)發(fā)者工具。

通俗點(diǎn)說(shuō)就是: 我們?cè)谑褂?Restful 風(fēng)格接口的時(shí)候,增刪改查可能會(huì)有四個(gè)接口,但是如果你用了 GraphQL 的話,可能就只需要一個(gè)接口,通過(guò)傳遞不同的模板參數(shù),去執(zhí)行不同的增刪改查操作。

你可以靈活地去調(diào)用 GraphQL 去獲取你自己想要的數(shù)據(jù)。

簡(jiǎn)單實(shí)踐

GraphQL 優(yōu)勢(shì)?

很多公司的后端使用了 GraphQL 來(lái)代替之前的 Restful 接口風(fēng)格,那么為啥呢?GraphQL 到底有什么優(yōu)勢(shì),值得這些公司去使用呢?

1.靈活

我們使用 Restful 的時(shí)候,大部分情況下一個(gè)接口只能返回一種數(shù)據(jù),如果你想要另一種數(shù)據(jù),那只能是重新再寫(xiě)一個(gè)接口。

但是在 GraphQL 中,返回什么樣的數(shù)據(jù),可以由調(diào)用方去決定,就比如剛剛實(shí)踐的例子,假如我傳了:

那么數(shù)據(jù)庫(kù)查詢(xún)會(huì)返回給我兩個(gè)字段的數(shù)據(jù):

如果你只需要一個(gè)字段,那么你可以傳:

那么數(shù)據(jù)庫(kù)查詢(xún)就只會(huì)返回給你一個(gè)字段:

2.精簡(jiǎn)

其實(shí)剛剛已經(jīng)舉過(guò)例子了,Restful 風(fēng)格下,增刪改查需要寫(xiě)四個(gè)接口,但是 GraphQL 可能只需要一個(gè)接口即可,大大減少了接口代碼。

3.統(tǒng)一

因?yàn)?GraphQL 查詢(xún)的入口大大減少,甚至可能一個(gè)項(xiàng)目只有一個(gè)查詢(xún)?nèi)肟冢越y(tǒng)一了查詢(xún)的規(guī)范。

GraphQL 局限性

1.學(xué)習(xí)成本

大部分前后端都習(xí)慣了 Restful 風(fēng)格,想要轉(zhuǎn) GraphQL 需要一定的學(xué)習(xí)成本,所以我們可以看到一般使用 GraphQL 的都是初創(chuàng)公司或者大公司,只有這些公司才有條件或者成本區(qū)做這件事。

2.建設(shè)成本

很多公司都一直是建設(shè) Restful 的基礎(chǔ)架構(gòu),如果想要轉(zhuǎn) GraphQL,那意味著可能需要改造現(xiàn)有的架構(gòu),這是需要時(shí)間成本和建設(shè)成本的。

3.雞肋?

說(shuō) GraphQL 好用吧,確實(shí)挺好用,但是說(shuō)非他不可吧,好像也不是。感覺(jué)就是還沒(méi)到非用他不可的地步。

4.安全性

正是因?yàn)?GraphQL 的靈活性開(kāi)放性,所以導(dǎo)致了他的安全系數(shù)大大降低。

調(diào)用方能靈活獲取數(shù)據(jù),那是萬(wàn)萬(wàn)不可的,因?yàn)橛幸恍┧矫軘?shù)據(jù)可不能給他們?nèi)カ@取~

可能還有遇到一些惡意用戶(hù),對(duì)你的數(shù)據(jù)進(jìn)行查詢(xún),進(jìn)而對(duì)你造成不利。

5.排隊(duì)?

只有一個(gè)查詢(xún)?nèi)肟诘脑挘侨绻芏嗾{(diào)用方同時(shí)調(diào)用的話,難道要排隊(duì)查詢(xún)嗎?這樣的話會(huì)不會(huì)查詢(xún)時(shí)長(zhǎng)會(huì)很久?

責(zé)任編輯:趙寧寧 來(lái)源: 前端之神
相關(guān)推薦

2021-09-13 10:03:54

藍(lán)牙連接藍(lán)牙藍(lán)牙設(shè)備

2021-04-27 15:13:20

Java開(kāi)發(fā)語(yǔ)言

2020-07-02 14:12:52

C++語(yǔ)言編程

2013-03-04 10:10:36

WebKit瀏覽器

2024-03-07 10:21:56

2015-03-27 10:20:41

谷歌地圖谷歌偉大

2024-01-10 17:04:13

通信模塊通信技術(shù)通信模組

2017-08-21 15:10:30

筆記本塑料材質(zhì)工藝

2020-05-25 20:46:59

Python編程語(yǔ)言程序員

2021-06-30 06:56:18

數(shù)據(jù)泄露零信任網(wǎng)絡(luò)安全

2022-08-04 23:32:38

比特幣以太坊代幣

2022-07-14 07:17:11

LXCDocker語(yǔ)言

2020-05-06 16:47:59

ServerlessMVC架構(gòu)

2024-02-20 08:09:51

Java 8DateUtilsDate工具類(lèi)

2011-09-06 09:37:04

MTK平臺(tái)

2020-07-28 15:18:52

Gartner信息安全網(wǎng)絡(luò)安全

2023-11-13 08:49:54

2016-12-28 10:37:46

AndroidGradleApache Ant

2018-05-09 11:04:35

Java程序員大數(shù)據(jù)

2020-03-30 16:18:02

代碼開(kāi)發(fā)工具
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)