0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Spring Boot でGraphQLのMutationをちょっといじってみた。

Posted at

はじめに

Queryに続いて、Mutationをいじってみた。

参考サイト

基本的な考え方

QueryがMutationに変わるだけ。

type Mutation {
  addHero(name: String): Hero
}

を書いて、

    @MutationMapping
    public Hero addHero(@Argument String name) {
        return new Hero(name);
    }

@MutationMapping」を書くだけ。

リクエストは、

mutation
{
  addHero(name:"baan" ) {
    name
  }
}

で、OK

疑問

QueryとMutationは、ただの識別子?(動作としては変わらない?)と思い、Geminiに聞いてみる。

そうすると、1リクエスト内で複数クエリの場合に挙動が違うらしい。

複数クエリとは、以下のようにheroクエリとbookByIdクエリの2つを1リクエストで送信するような複数クエリ。

以下はQueryのパターン。

{
  hero { ★1
    name
    friends(limit:1){name}
  }
  
  bookById(id: "book-1") { ★2
    id
    pageCount
    author {
      id
      firstName
      lastName
    }
  }
}

Mutationの複数クエリは以下。

mutation
{
  hero1:updateHero(id:"1"name:"badman" ) {
    name
  }

  hero2:updateHero(id:"2"name:"superman" ) {
    name
  }
}

で、Queryは複数クエリを並列実行となるらしく、Mutationは直列らしい。
が、試してみたけど、どちらも直列になったので、設定が必要そうな雰囲気。

振り返り

ちょっといじったレベルの感想では、GraphQLとRestAPIのどっちを使う?ってなったとき、GraphQLに慣れていたらどっちでも。って感じもした。

明確にGraphQLを使いたいなって思うところは、PCとモバイルの共通化とか?
GraphQLが流行っていなかった頃に、RestAPIでPCとモバイルを共通化した際に、この項目、PCしか使わないけどな。とか色々思ったことがあったので。

モバイルは、PCと比べて表示する項目が少ないとかあったので。

そういう時にGraphQLを使うと必要な項目だけを取得できるのは良いのかな?って思った。今日この頃。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?