Closed9
graphql
Resolver 一つのフィールドをfetchする
- スキーマ
- ≒型?
- クライアントとサーバの間の契約
スキーマの例
type Query {
allPersons(last: Int): [Person!]!
allPosts(last: Int): [Post!]!
}
type Mutation {
createPerson(name: String!, age: Int!): Person!
updatePerson(id: ID!, name: String!, age: String!): Person!
deletePerson(id: ID!): Person!
}
type Subscription {
newPerson: Person!
}
type Person {
id: ID!
name: String!
age: Int!
posts: [Post!]!
}
type Post {
title: String!
author: Person!
}
- クエリ言語
- 実行アルゴリズム
- フィールドをトラバースしresolverを実行する
Query
どんなデータが必要かを表現したもの
Mutations
- データの作成
- データの更新
- データの削除
Subscriptions
サーバーとのリアルタイムコミュニケーション
Schemaのフロントエンドとバックエンドの共有ってどうやるの?
type ~は
- Query
- Mutations
- Subscriptions
が特殊で
あとは構造体的なイメージ?
サーバの動作
- Queryを受け取る
- 妥当性チャック
- 関数を実行して、結果を得る
field1つ1つのresolver呼び出しにDBアクセスがもし発生したらかなり非効率。
ORMと合わせて使うことが多い?
いや、あるレコードが欲しかったら、あるレコード取ってきて、そのメンバーのresolverは取ってきたレコードにアクセスすれば問題ないか
このスクラップは2022/11/11にクローズされました