Trả về record vừa thay đổi kèm các field liên quan, để client cập nhật cache và giao diện ngay.
Với normalized cache, chỉ cần id và các field đã đổi là mọi màn hình tự cập nhật.
input UpdatePostInput { id: ID!, title: String }
type UpdatePostPayload {
post: Post # enough for the client to update its cache
errors: [UserError!]! # business errors modelled as data, not thrown
}
type Mutation { updatePost(input: UpdatePostInput!): UpdatePostPayload! }Mẫu phổ biến là một kiểu trả về riêng cho mỗi mutation, chứa cả record lẫn mảng errors nghiệp vụ. Nhờ đó lỗi như hết hàng hay sai mật khẩu được mô hình hoá trong schema thay vì nằm trong mảng errors kỹ thuật.
Về tham số: nhận qua một kiểu đầu vào duy nhất để thêm field về sau không breaking change. Thêm field vào kiểu đầu vào là thay đổi an toàn, còn thêm tham số bắt buộc thì không.
Đặt tên theo hành động nghiệp vụ thay vì thao tác lưu trữ: một mutation mô tả việc xuất bản bài viết rõ ràng hơn một mutation cập nhật field trạng thái.