나의 발자취
[Node.js] GraphQL Schema 설계, mutation 타입 본문
일단 냅다 올리고 시작
type Query { // 예약어
hello: String
getPost(id: ID!): Post
}
type Post { // 커스텀 자료형
id: ID!
title: String!
content: String!
}
type Mutation { // 예약어
createPost(input: PostInput): Post
updatePost(id: ID!, input: PostInput) : Post
deletePost(id: ID!)
}
input PostInput {
title: String!
content: String!
}
// 기본 타입
// Int: 32bit 정수형
// Float: 부동 소수점 숫자
// String
// Boolean
// ID: 고유 식별자(문자열)
// 커스텀 타입
{ // hello 데이터를 가져오고, id가 1번인 게시글의 데이터를 요청하는 쿼리문
hello
getPost(id: "1") {
id
title
content
}
}
mutation { // QL 요청 -> 게시글 생성 요청 (insert, update, delete)
createPost(input: {title: "New Post", content" "New Content"}) {
id
title
content
}
}
// QL 응답 -> 게시글 생성 후 응답 결과
{
"data": {
"createPost": {
"id":2,
"title":"New Post",
"content":"New Content"
}
}
}
위 코드에서 Query, Mutation은 예약어이고, swift의 메서드와 프로토콜이랑 비슷한데 ! 의 경우는 필수적인 데이터를 의미한다.
그래프QL은 "뮤테이션(mutation) 쿼리"라고 하는 특정 쿼리 형식을 사용해서 데이터 집합에서 요소를 생성, 업데이트하거나 삭제한다.
출처: https://www.itworld.co.kr/news/343305#csidxef63a25950bac55ac6e191119c91076
위에서 정의한 Mutation 타입을 호출하는 방법은 아래와 같다.
Mutation 호출
mutation { // QL 요청 -> 게시글 생성 요청
createPost(input: {title: "New Post", content" "New Content"}) {
id
title
content
}
}
type Mutation은 createPost 메서드가 있고, 인풋으로는 title, content 객체를 받는다.
그리고 Post 프로토콜을 따르므로, type Post를 정의한 대로 반드시 요구되는 데이터 자료형을 요청한다.
그러면 아래와 같은 결과가 나올 것으로 예상된다.
Mutation 응답
// QL 응답 -> 게시글 생성 후 응답 결과
{
"data": {
"createPost": {
"id":2,
"title":"New Post",
"content":"New Content"
}
}
}
'Backend' 카테고리의 다른 글
[Node.js] 시퀄라이즈를 활용한 게시판 생성, curl 날려서 데이터 주고받기 - POST (2) | 2024.10.15 |
---|---|
[Node.js] ORM 시퀄라이즈(Sequelize)를 활용해서 테이블 만들고 데이터 주고받기 (0) | 2024.10.15 |
GraphQL 특징, node js로 GraphQL 구현 및 쿼리 날려보기 ⭐️ (0) | 2024.10.15 |
댓글 기능 추가하기 (RestAPI 별도 라우터 /comments) (0) | 2024.10.15 |
RestAPI에 betterSQL 적용하기 (0) | 2024.10.14 |
Comments