久久国产精品一区二区三区四区,久色婷婷小香蕉久久,国产日韩欧美在线播放不卡,另类av一区二区

GraphQL對比Rest,你學到了什么?
來源:今日頭條    時間:2023-04-10 08:07:16
概述

當創建web服務應用程序時,可以選擇使用REST或GraphQL作為通信模式。兩者都可能在HTTP上使用JSON,但有不同的優點和缺點。


(資料圖片)

本文主要比較GraphQL和REST,以操作一個產品數據庫示例,比較兩種解決方案在執行相同的客戶端操作時的差異:

創建處于草稿狀態的產品更新產品詳細信息獲取產品列表獲取單個產品及其訂單的詳細信息REST

REST(Representational State Transfer,代表性狀態傳輸)的主要數據元素稱為Resource。在本例中,資源是“產品”。

創建產品

curl --request POST "http://localhost:8081/product" \--header "Content-Type: application/json" \--data "{ "name": "Watch", "description": "Special Swiss Watch", "status": "Draft", "currency": "USD", "price": null, "imageUrls": null, "videoUrls": null, "stock": null, "averageRating": null}"更新產品

curl --request PUT "http://localhost:8081/product/{product-id}" \--header "Content-Type: application/json" \--data "{ "name": "Watch", "description": "Special Swiss Watch", "status": "Draft", "currency": "USD", "price": 1200.0, "imageUrls": [ "https://graphqlvsrest.com/imageurl/product-id" ], "videoUrls": [ "https://graphqlvsrest.com/videourl/product-id" ], "stock": 10, "averageRating": 0.0}"獲取產品列表

curl --request GET "http://localhost:8081/product?size=10&page=0"

{ "id": 1, "name": "T-Shirt", "description": "Special beach T-Shirt", "status": Published, "currency": "USD", "price": 30.0, "imageUrls": ["https://graphqlvsrest.com/imageurl/1"], "videoUrls": ["https://graphqlvsrest.com/videourl/1"], "stock": 10, "averageRating": 3.5 }通過訂單獲取單個產品

要獲取產品及其訂單,通常需要先調用產品列表API,然后調用訂單資源以查找相關訂單:

curl --request GET "localhost:8081/order?product-id=1"

{ "id": 1, "productId": 1, "customerId": "de68a771-2fcc-4e6b-a05d-e30a8dd0d756", "status": "Delivered", "address": "43-F 12th Street", "creationDate": "Mon Jan 17 01:00:18 GST 2022"}

除了獲取所有產品的原始操作外,還需要對每個感興趣的產品執行一次此操作,這會產生N+1的相關問題。

GraphQL

GraphQL API操作包含Queries和Mutations。Queries負責獲取數據,Mutations用于創建和更新。

Queries和Mutations的Schema模式定義了客戶端可能的請求和響應。

創建產品

curl --request POST "http://localhost:8081/graphql" \--header "Content-Type: application/json" \--data \"{ "query": "mutation {saveProduct ( product: { name: \"Bed-Side Lamp\", price: 24.0, status: \"Draft\", currency: \"USD\" }){ id name currency price status} }"}"

{ "data": { "saveProduct": { "id": "12", "name": "Bed-Side Lamp", "currency": "USD", "price": 24.0, "status": "Draft" } }}更新產品

curl --request POST "http://localhost:8081/graphql" \--header "Content-Type: application/json" \--data \"{"query": "mutation {updateProduct( id: 11 product: { price: 14.0, status: \"Publish\" }){ id name currency price status } }","variables":{}}"

{ "data": { "updateProduct": { "id": "12", "name": "Bed-Side Lamp", "currency": "USD", "price": 14.0, "status": "Published" } }}獲取產品列表

curl --request POST "http://localhost:8081/graphql" \--header "Content-Type: application/json" \--data \"{ "query": "query {products(size:10,page:0){id name status}}"}"

{ "data": { "products": [ { "id": "1", "name": "T-Shirt", "status": "Published" }, ... ] }}通過訂單獲取單個產品

curl --request POST "http://localhost:8081/graphql" \--header "Content-Type: application/json" \--data \"{ "query": "query {product(id:1){ id name orders{customerId address status creationDate}}}"}"

{ "data": { "product": { "id": "1", "name": "T-Shirt", "orders": [ { "customerId": "de68a771-2fcc-4e6b-a05d-e30a8dd0d756", "status": "Delivered", "address": "43-F 12th Street", "creationDate": "Mon Jan 17 01:00:18 GST 2022" }, ... ] } }}GraphQL優勢

GraphQL允許靈活和動態的查詢:

客戶端只能請求Schema已定義的字段支持別名用于請求具有自定義鍵值的字段客戶端可以使用查詢來管理返回結果的順序客戶端可以更好地與API中的任何更改解耦

GraphQL傾向于避免昂貴的操作,通常可以使用GraphQL在一個請求中獲取所需的所有數據。

何時使用REST

GraphQL不能替代REST。在以下情況下,可能更適合使用REST:

應用程序是資源驅動的,其中的操作與各個資源實體非常直接和完全地聯系在一起需要web緩存,因為GraphQL本身并不支持需要文件上傳,因為GraphQL本身并不支持結論

選擇使用REST或GraphQL作為通信模式,需要由業務場景決定。GraphQL靈活性也決定了其一定程度上的復雜性。

使用GraphQL也需要考慮在應用層面的緩存優化,和解決N+1問題的批量操作優化。

關鍵詞:

上一篇:

下一篇:

X 關閉

X 關閉

久久国产精品一区二区三区四区,久色婷婷小香蕉久久,国产日韩欧美在线播放不卡,另类av一区二区
噜噜噜躁狠狠躁狠狠精品视频| 日韩视频亚洲视频| 欧美绝品在线观看成人午夜影视| 国产日韩欧美视频| 在线精品一区二区| 亚洲欧美国产毛片在线| 国产欧美一区二区色老头| 欧美精品日韩| 久久精品国产96久久久香蕉| 巨胸喷奶水www久久久免费动漫| 国产精品a久久久久久| 性欧美xxxx视频在线观看| 国产精品家教| 亚洲国产精品国自产拍av秋霞| 国产精品一区二区男女羞羞无遮挡| 一区二区日韩欧美| 在线国产精品播放| 亚洲欧美另类久久久精品2019| 久久久久久久一区二区三区| 欧美日韩亚洲国产一区| 国产一区二区三区精品久久久| av成人手机在线| 午夜视频久久久久久| 欧美日韩免费在线| 欧美日韩一区二区在线| 亚洲精品免费观看| 久久在精品线影院精品国产| 又紧又大又爽精品一区二区| 欧美日韩国内自拍| 91久久精品国产91性色tv| 国产精品私拍pans大尺度在线| 国产欧美综合一区二区三区| 亚洲砖区区免费| 美女视频黄免费的久久| 欧美精品免费在线| 亚洲精品一线二线三线无人区| 正在播放日韩| 欧美日韩一区三区| 欧美激情区在线播放| 欧美日韩国产在线播放网站| 亚洲茄子视频| 欧美精品97| 亚洲精品乱码久久久久久黑人| 亚洲人成在线观看一区二区| 国产毛片精品国产一区二区三区| 久久久无码精品亚洲日韩按摩| 国产欧美精品国产国产专区| 欧美精品久久久久久久久久| 午夜欧美理论片| 国产一区二区三区的电影| 欧美成在线观看| 久久色中文字幕| 欧美日韩天堂| 欧美午夜视频在线观看| 性色av香蕉一区二区| 99国产精品私拍| 一区二区三区免费在线观看| 欧美精品七区| 欧美伊人精品成人久久综合97| 欧美一区二区三区的| 国产精品久线观看视频| 亚洲一区免费观看| 女人天堂亚洲aⅴ在线观看| 午夜免费电影一区在线观看| 亚洲片在线观看| 狠狠色狠狠色综合日日91app| 日韩视频欧美视频| 亚洲一区二区三区免费在线观看| 亚洲欧洲在线免费| 亚洲综合电影一区二区三区| 在线亚洲成人| 亚洲国产视频一区二区| 99视频在线精品国自产拍免费观看| 亚洲国产精品传媒在线观看| 欧美一区二区三区播放老司机| 亚洲精品一级| 国产日韩综合一区二区性色av| 国产香蕉97碰碰久久人人| 国产精品亚洲不卡a| 欧美日本高清| 亚洲黄色有码视频| 久久综合九色九九| 久久夜色精品国产欧美乱| 久久丁香综合五月国产三级网站| 国产精品夫妻自拍| 黄色日韩精品| 国产精品高潮粉嫩av| 欧美屁股在线| 午夜精品理论片| 亚洲欧美国产不卡| 亚洲免费伊人电影在线观看av| 亚洲激情综合| 日韩午夜精品视频| 欧美粗暴jizz性欧美20| 国产欧美日韩中文字幕在线| 极品尤物一区二区三区| 亚洲国产小视频| 国内视频精品| 欧美不卡激情三级在线观看| 亚洲欧美日本伦理| 免费毛片一区二区三区久久久| 欧美国产日韩二区| 国产精品v欧美精品v日韩精品| 国产精品女人久久久久久| 欧美精品久久久久久久久久| 久久精品人人| 欧美在线不卡视频| 欧美日韩免费高清一区色橹橹| 久久人人精品| 久久国产精品久久久久久电车| 欧美视频一区二区三区四区| 一本久道久久综合婷婷鲸鱼| 欧美日韩午夜在线| 99视频国产精品免费观看| 亚洲欧洲日产国产综合网| 国产日韩在线不卡| 亚洲成色777777女色窝| 国产精品视频自拍| 一区电影在线观看| 韩国一区二区三区美女美女秀| 欧美淫片网站| 国产在线观看精品一区二区三区| 久久综合999| 国产精品久久久久久久9999| 国产精品v欧美精品v日韩| 亚洲激情亚洲| 亚洲第一精品电影| 亚洲欧美国产制服动漫| 在线成人亚洲| 亚洲自拍三区| 在线成人激情视频| 欧美在线视频日韩| 国产一区二区在线观看免费| 国产亚洲a∨片在线观看| 欧美成年人在线观看| 一区二区三区精品在线| 久久中文在线| 国产日韩在线一区| 欧美与欧洲交xxxx免费观看| 欧美大片免费看| 亚洲图片你懂的| 亚洲自拍偷拍网址| 欧美日韩一区二区视频在线| 国产精品影片在线观看| 久久国产精品久久国产精品| 欧美日韩免费一区二区三区视频| 久久中文在线| 蜜桃伊人久久| 亚洲国产欧洲综合997久久| 在线视频成人| 欧美在线一级视频| 国产一区二区看久久| 亚洲人成免费| 99精品视频免费全部在线| 亚洲免费精品| 久久精品国产欧美激情| 欧美寡妇偷汉性猛交| 亚洲精品一区二区三区av| 玖玖综合伊人| 羞羞视频在线观看欧美| ●精品国产综合乱码久久久久| 欧美视频在线观看免费| 亚洲国产精品第一区二区| 国产日本精品| 国产精品激情偷乱一区二区∴| 欧美成人tv| 在线性视频日韩欧美| 蜜臀91精品一区二区三区| 亚洲第一网站免费视频| 国产一区 二区 三区一级| 欧美一区二视频在线免费观看| 国产一级久久| 亚洲视频成人| 国产精品国产精品国产专区不蜜| 伊人久久大香线蕉综合热线| 久久人人超碰| 亚洲第一精品久久忘忧草社区| 午夜精品久久| 国产午夜精品在线观看| 亚洲激情不卡| 亚洲一区二区三区在线视频| 国产精品天美传媒入口| 欧美视频精品一区| 欧美激情偷拍| 亚洲欧洲日韩综合二区| 亚洲福利在线看| 欧美日韩国语| 亚洲第一狼人社区| 狼狼综合久久久久综合网| 亚洲欧美日韩在线一区| 黄色工厂这里只有精品| 亚洲欧美激情精品一区二区| 欧美日韩成人综合在线一区二区| 亚洲欧美日韩高清| 欧美日本在线看| 日韩视频永久免费| 麻豆精品一区二区av白丝在线| 老司机久久99久久精品播放免费| 伊人激情综合| 午夜在线视频观看日韩17c|