Creating Data:
A mutation to create a new user.
mutation { createUser(name: "John Doe", email: "john@example.com") { id name email } }
Updating Data:
A mutation to update an existing user's email.
mutation { updateUser(id: "123", email: "newemail@example.com") { id name email } }
Deleting Data:
A mutation to delete a user.
mutation { deleteUser(id: "123") { id name email } }
Nested Mutations:
A mutation to create a new post associated with a specific user.
mutation { createPost(userId: "123", title: "New Post", body: "Content") { id title body author { id name } } }
Batch Mutations:
Multiple mutations in a single request.
mutation { createUser(name: "Alice", email: "alice@example.com") { id name email } createPost(userId: "456", title: "New Post", body: "Content") { id title body } }
Mutation with Variables:
Using variables to pass dynamic values to mutations.
mutation CreatePost($userId: ID!, $title: String!, $body: String!) { createPost(userId: $userId, title: $title, body: $body) { id title body } }
And the corresponding variables:
{ "userId": "123", "title": "New Post", "body": "Content" }
Mutation with Conditional Execution:
Performing mutations conditionally using directives.
mutation CreatePost($title: String!, $body: String!, $publish: Boolean!) { createPost(title: $title, body: $body, publish: $publish) @include(if: $publish) { id title body published } }
And the corresponding variables:
{ "title": "New Post", "body": "Content", "publish": true }
Updating Nested Data:
A mutation to update a post's title and body.
mutation { updatePost(id: "123", title: "Updated Title", body: "Updated Body") { id title body } }
Deleting Nested Data:
A mutation to delete a comment associated with a specific post.
mutation { deleteComment(postId: "123", commentId: "456") { id title comments { id text } } }
Batch Mutations with Nested Data:
Multiple mutations in a single request, including nested mutations.
mutation { updateUser(id: "123", email: "newemail@example.com") { id name email } createPost(userId: "123", title: "New Post", body: "Content") { id title body author { id name } } }
Mutation with Enums:
Using enums to specify options for mutations.
mutation { updateStatus(id: "123", status: PENDING) { id status } }
Mutation with Custom Input Types:
Using custom input types to encapsulate mutation arguments.
mutation { createProduct(input: { name: "Product Name", price: 99.99 }) { id name price } }
Mutation with File Upload:
A mutation to upload a file along with other data.
mutation UploadFile($file: Upload!, $description: String!) { uploadFile(file: $file, description: $description) { id filename description url } }
And the corresponding variables:
{ "file": File, "description": "File Description" }
These examples showcase various advanced techniques and best practices for constructing GraphQL mutations to modify data on the server-side. By leveraging these features, developers can build powerful and flexible APIs that allow clients to interact seamlessly with their data.
0 Comments