GraphQL 돌연변이의 최적 실천
GraphQL API에서 사용자는 조회, 구독, 돌연변이 세 가지 동작을 수행할 수 있습니다.GraphQL 쿼리는 서버에서 데이터를 가져오는 데 사용됩니다.구독은 일부 트리거 이벤트에 응답하여 데이터를 가져오는 장기적인 요청입니다.마지막으로, 변이를 사용하여 서버 측 데이터를 쓰거나 수정합니다.
이 가이드에서 GraphQL 돌연변이, 그들의 구조와 정의, 그리고 GraphQL 돌연변이를 사용하는 데 관련된 최선의 실천을 깊이 있게 연구할 것이다.
GraphQL 돌연변이란 무엇입니까?
돌연변이에 들어가기 전에 먼저 GraphQL을 소개해 드리겠습니다.
GraphQL는 API와 상호 작용하는 쿼리 언어입니다.최근 몇 년 동안, 일부 용례에 대해, 그것은 전통적인 REST API의 더욱 유연하고 높은 성능의 대체품으로 갈수록 환영을 받고 있다.
GraphQL에서 돌연변이는 서버측 데이터를 만들거나 수정하는 데 사용됩니다.이것은 그것들이 변이하거나 서버의 정보를 변경하는 데 사용된다는 것을 의미한다.이는 상태를 변경하는 REST 방법(DELETE, PUT, POST 및 PATCH)에 해당합니다.
GraphQL의 돌연변이를 어떻게 사용합니까
GraphQL 조회의 구조와 이런 GraphQL 조작이 어떻게 작동하는지 이해하면 다음 절에서 GraphQL 돌연변이를 디자인하는 최선의 실천을 토론하는 데 도움이 될 것이다.
다음 그림은 GraphQL 작업의 구조를 요약한 것입니다.먼저 작업 유형을 지정합니다.그 다음에 모든 조작은 자신의 유일한 이름으로 분배되었다.이 예에서 HeronandFriends는 작업 이름입니다.어떤 경우, 조작은 변수를 매개 변수로 전달해야 할 수도 있다.이러한 변수는 변수 정의에 지정됩니다.이 예에서 변수는 $eposion입니다. 이것은 eposion 형식에 속합니다.
변수의 정의 형식은
($variable_name: VariableType)
이다.여러 변수 정의를 쉼표로 구분된 값으로 추가하여 여러 변수 정의를 포함할 수 있습니다.조작 유형은 조회, 구독, 변이일 수 있습니다.다음 예는 작업 중 지정한 동일한 구조로 데이터를 얻는 조회 조작을 보여 준다.
query HeroNameAndFriends ($episode: Episode) {
hero(episode: $episode){
name
}
}
아래의 예는 변이 조작을 보여 준다.서버측 GraphQLAPI에서 호출할 변이 방법을 정확하게 명명함으로써 신호를 보냅니다.여기서 addBook 변이가 변이를 만들었습니다. 이 변이는 책을 라이브러리에 저장하는 API에 책을 추가합니다.제목과 저자에 대한 정보는 변수 정의($title: String!, $author: author)
를 통해 돌연변이에 제공된다.mutation AddNewBook ($title: String!, $author: author) {
addBook(title: $title, author: $author) {
title
author
}
}
검색과 마찬가지로 돌연변이도 데이터를 되돌려준다.그러나 돌연변이는 새로 만든 데이터만 되돌려줍니다.변이가 성공적으로 수행되면 API는 작성한 책을 다음 형식으로 반환합니다.{
title
author
}
이 addBook이라는 변이를 GraphQL API에 성공적으로 등록하기 위해서는 루트 변이 대상에 GraphQL API 유형 정의를 포함해야 합니다. 아래와 같습니다.type Mutation {
addBook (title: String!, author: author): AddBookResult!
}
구조는 돌연변이의 명칭, 변수 정의와 돌연변이의 결과를 포함한다.여기의 변수는 (title: String!, author: author)
로 정의됩니다.뒤따르기!
는 돌연변이에 필요한 변수를 지정하는 데 사용됩니다.이 변이를 성공적으로 실행하려면 제목에 문자열 값을 입력해야 합니다.그러나 작성자 필드는 선택 사항입니다.이와 유사하게, AddBookResult!
반환 형식은 이 변이가 항상 반환 값을 가져야 한다고 지정합니다.GraphQL 돌연변이의 최적 실천
일반적으로 돌연변이는 한 물체에 대한 동작을 대표한다.다음은 GraphQL의 급변하는 몇 가지 핵심 모범 사례입니다.
sendResetPasswordEmail
은 명명 작업sendEmail(type: PASSWORD_RESET)
보다 직관적이고 구체적이다.다음 선택은 sendEmail이라는 여러 개의 돌연변이가 서로 다른 변수 정의를 가지고 있음을 의미할 수 있습니다.명명 규칙이 구체화됨에 따라 UI 개발자들은 어떤 변종을 실행할지 정확히 알 수 있기 때문에 전단을 구축하는 것이 더욱 쉬워졌다.백엔드 개발자는 어떤 일만 하는 특정한 돌연변이 서브집합만 제공함으로써 그들의 API를 최적화시킬 수 있다.이런 설계로 인해 더 일반적인 명칭 돌연변이보다 공격자가 API를 이용하기 어려울 것이다.단일 네스트된 입력 객체를 사용하려면 addBook 변형을 업데이트합니다.
mutation AddNewBook (input: AddBookInput!) {
addBook($input: $input) {
title
author
}
}
기본 제목과 작성자 필드는 별도로 지정하지 않고 AddBookInput 객체 유형으로 포장됩니다.type AddBookInput {
title: String!
author: author
# Additional fields can be added to this single object.
}
따라서 모든 기존 모델 디자인은 입력 대상에 더 많은 끼워 넣은 하위 필드를 추가함으로써 돌연변이의 전체 구조를 업데이트해서 더 많은 필드를 포함하는 것이 아니라 쉽게 확장할 수 있다.이와 마찬가지로 중첩된 하위 필드만 삭제하면 입력 대상의 불필요한 필드를 버려도 된다.결론
GraphQL API에서 쿼리는 서버에서 데이터를 가져오는 데 사용되며, 돌연변이는 서버측 데이터를 수정하거나 쓰는 데 사용됩니다.따라서 돌연변이를 정의할 때 유형 정의, 돌연변이 명칭과 변수 정의를 포함한 구조를 이해해야 한다.돌연변이를 사용할 때 더 좋은 결과를 얻기 위해 본 블로그에서 토론한 최선의 실천을 기억하세요.
GraphQL은 REST의 경쟁 상대임에도 불구하고 개발자가 GraphQL을 사용하여 데이터베이스에 있는 데이터를 조회하고 수정할 수 있다는 점이 중요하다.Fauna는 유연하고 개발자에게 친절하며 서버가 없는 데이터베이스로 안전하고 확장 가능한 클라우드 API로 제공되며 본기GraphQL 인터페이스를 가지고 있다.무료로 시도할 수 있으며, 몇 분만 있으면 새로운 데이터베이스를 시작할 수 있다.
무료 등록
현대 응용 프로그램의 데이터 API가 바로 여기에 있다.신용카드 없이 무료로 등록할 수 있습니다. 바로 시작합니다.
Sign-up now
빠른 시작 설명서
우리의 빠른 입문 안내서를 시도해 보세요. 5분 안에 당신의 첫 번째 동물 데이터베이스를 시작하고 실행하세요!
Read more
Reference
이 문제에 관하여(GraphQL 돌연변이의 최적 실천), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/fauna/best-practices-for-graphql-mutations-1oe7텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)