GraphQL一角

206 阅读1分钟

不知道正在阅读文章的小伙伴在开发过程中有没有遇到这样的问题,产品的需求出来以后,前端后端各自领任务,约定接口规范,撸起袖子紧锣密鼓的打算大干一场。
A few weeks later...
产品调整了需求,当初设计的接口已经无法满足新需求的使用要求,此时,作为前端小哥的你,可能这样操作:和后端小哥商量,希望能在原有接口中新增字段,问题迎刃而解。
但如果这个接口是多端在使用,而新增的字段在其中一个用户端里边,可能就会变成一组无用的数据。

使用GraphQL

query race($teamA: String!) {

  race(teamA: $teamA): {
    id,
    type,
    teamA,
    teamB,
    time
  }

}

返回值:

{
  "data": {
    "race": {
      "id": 123,
      "type": "CSGO",
      "teamA": "Astralis",
      "teamB": "Navi",
      "time": "2019-06-22 11:40:00"
    }
  }
}

当需求有变动的时候,比如增加字段

query race($teamA: String!) {

  race(teamA: $teamA): {
    id,
    type,
    teamA,
    teamB,
    time,
    # 新字段
    supportedQuizzes
  }

}

返回值:

{
  "data": {
    "race": {
      "id": 123,
      "type": "CSGO",
      "teamA": "Astralis",
      "teamB": "Navi",
      "time": "2019-06-22 11:40:00",
      // 新字段
      "supportedQuizzes": ["Pistal Round", "Winner"]
    }
  }
}

小结

由于灵活多变的前端业务,每次都让后端同学帮忙改接口并不一定是好的选择。有兴趣的同学不妨深入了解一下GraphQL,前端能够更加灵活方便的得到想要的数据,后端也能更专注于服务等领域,而不需要把太多精力分散在CRUD上。