iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 1
0

**解決了Restful API問題,卻紅不起來? **
GraphQL 的確是讓Rest更加簡潔有效率,但依舊只有少部分大企業在使用,小公司更是微乎其微,紅不起來的原因是為什麼呢?

1.n+1問題
我們先假設你下了一個查詢

query GetUsersList {
userList {       
    id
    address {    
      id
      streetName
    }
  }
}

Server端解析返回全部用戶列表,很好,很順利

const resolvers = {
  query: {
    userList: (root) => {
      return db.users.all()
    }
  }
}

問題來了,當查詢address內的Id時,因為每個端點都會被解析一次,所以有n個address就會被解析n次

const resolvers = {
  User: {
    address: (user) => {
      return db.addresses.fromId(user.addressId)
    }
  }
}

所以我們可以想成是這樣

query GetUsersList {
userList {       //最後再返回一次,總共n+1次
    id
    address {    //n個address就獲取n次
      id
      streetName
    }
  }
}

這種逐層解析的方式,讓GraphQL特別容易引起這種問題
官方詳解
2.GraphQL是用的人爽,Restful是寫的人爽
在沒有特別需求的情況下......如果你是寫API的你會挑哪個......

3.官方文檔不夠充足
GraphQL只提供了基礎的官方文檔,仍算是一個新技術,資源不夠多導致後端重構起來麻煩

總結來說,GraphQL依舊有許多問題需要解決,會不會火起來也很難說,但至少是有越來越多企業開始使用的趨勢


上一篇
Day07 - 該使用GraphQL嗎? GraphQL優缺點比較
下一篇
Day09 - 如何打造GraphQL API (1) Server端與工具
系列文
30天精通Api (REST vs GraphQL)12

尚未有邦友留言

立即登入留言