V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
rikka
V2EX  ›  程序员

GraphQL 能不能一个请求完成查询然后修改的操作

  •  
  •   rikka · 2019-01-22 18:05:39 +08:00 · 2283 次点击
    这是一个创建于 1892 天前的主题,其中的信息可能已经有所发展或是发生改变。

    想用 github 的 api 来干点事 https://developer.github.com/v4/

    已知 owner 和 name

    {
      repository(owner: "repository 作者", name: "repository 名称") {
        id
      }
    }
    

    得到 repository 的 id,然后添加个 issue

    mutation {
      createIssue(input: {title: "test", repositoryId: "repository 的 id"
      , projectIds: [], labelIds: [], assigneeIds: []}) {
        issue {
            id
        }
      }
    }
    

    得到 issue 的 id,最后我要利用这个 id 把这个 issue 关掉

    共 3 步操作,很疑惑,GraphQL 到底能不能用一个请求来搞定,怎么搞法?不能的话,我用 restfull 干这事也差不多啊,GraphQL 这玩意学习成本还有点高😂

    8 条回复    2019-01-23 15:16:49 +08:00
    Rwing
        1
    Rwing  
       2019-01-22 18:25:53 +08:00
    是呢,似乎 GraphQL 更适合用来查询?
    lincanbin
        2
    lincanbin  
       2019-01-22 18:37:54 +08:00 via Android
    GraphQL is a data query language
    nigelvon
        3
    nigelvon  
       2019-01-22 18:46:36 +08:00
    这个问题和 graphQL 关系不大,要么你封装一个 mutation 直接接收 owner name title ...发帖子,要么就像你说的分两步。graphQL 并不能帮你解决这个问题。但是如果整体和 restfull 比,优点不要太多,能极大提升前后端迭代速度。
    rikka
        4
    rikka  
    OP
       2019-01-22 19:12:06 +08:00
    @nigelvon #3 封装 mutation 也不行吧,我这个问题的关键是每一步操作需要的参数是从上一步操作得到的,这 3 步操作要严格顺序执行才能得到我需要的结果
    rikka
        5
    rikka  
    OP
       2019-01-22 19:14:53 +08:00
    刚看 GraphQL 官网 A query language for your API 😭
    谷歌一下午,这下死心了
    3 步操作要写 3 个请求,实在是烦人,本以为 GraphQL 能帮忙搞定。。。
    rikka
        6
    rikka  
    OP
       2019-01-22 19:30:45 +08:00
    @Rwing #1
    @lincanbin #2
    @nigelvon #3

    突然有个问题,已知一个分类名称,需要查询这个分类下的所有商品
    普通操作的话,需要 2 步:
    1.根据分类名称查询得到分类 id
    2.利用分类 id 查到商品出来

    这种纯查询操作,GraphQL 到底能不能一步搞定啊?
    fuxkcsdn
        7
    fuxkcsdn  
       2019-01-22 22:57:58 +08:00
    @rikka 这个可以实现
    伪代码
    ```graphql
    query {
    categories (name=abc) {
    products {
    id,
    name
    }
    }
    }
    ```
    rikka
        8
    rikka  
    OP
       2019-01-23 15:16:49 +08:00
    @fuxkcsdn #7 谢谢解答,能这样一步搞定看来还不错,刚接触 GraphQL 有点懵😬
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5837 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 06:19 · PVG 14:19 · LAX 23:19 · JFK 02:19
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.