Docs Menu
Docs Home
/ /
Atlas App Services
/

Atlas GraphQL API [사용 중단됨]

이 페이지의 내용

  • 개요
  • GraphQL을 선택해야 하는 이유
  • App Services가 GraphQL 스키마를 생성하는 방법
  • GraphQL 작업
  • 쿼리
  • 변형
  • 제한 사항

Atlas GraphQL API 사용하면 클라이언트 애플리케이션이 표준 GraphQL 클라이언트 를 사용하여 연결된 MongoDB Atlas cluster 에 저장된 데이터에 액세스 수 있습니다.

Atlas App Services는 정의된 스키마가 있는 모든 연결된 컬렉션에 대해 GraphQL 유형을 자동으로 생성하고 모든 GraphQL 요청에 대해 역할 기반 권한을 평가합니다. GraphQL API를 통해 데이터를 사용할 수 있게 만드는 방법을 알아보려면 컬렉션에서 데이터 노출를 참조하세요.

Atlas GraphQL API에서 사용할 수 있는 생성된 유형 및 작업에 대해 알아보려면 GraphQL 유형 및 해석기를 참고하세요.

사용자 지정 쿼리 및 변형을 사용해 생성된 GraphQL API의 기능을 확장하는 방법은 사용자 지정 리졸버 정의를 참조하세요.

참고

무료로 Atlas 클러스터 생성하기

GraphQL API를 사용하면 MongoDB Atlas 클러스터 또는 연합 데이터베이스 인스턴스에 저장한 데이터에 액세스할 수 있습니다. 시작하려면 비어있는 클러스터를 생성하고 클러스터를 앱에 연결하세요.

아직 데이터가 없지만 GraphQL API를 살펴보고 싶다면 cluster에 샘플 데이터 세트를 추가하는 것이 좋습니다.

GraphQL은 클라이언트 애플리케이션을 위한 강력한 형식의 선언적 쿼리 언어입니다. 클라이언트는 한 번의 요청으로 필요한 정확한 데이터 형태와 내용을 정의하므로 오버페칭 문제가 발생하지 않고 서버를 여러 번 왕복해야 하는 번거로움을 피할 수 있습니다.

GraphQL에 대해 자세히 알아보려면 공식 GraphQL 튜토리얼을 확인하세요.

App Services를 사용하여 MongoDB 컬렉션용 JSON 스키마에서 GraphQL 스키마 및 해석기를 생성합니다. 이는 GraphQL 스키마 개발에 대한 기존의 코드 우선 및 스키마 우선 접근 방식과는 다릅니다.

App Services를 사용해 GraphQL 스키마를 정의하는 방법은 다음과 같습니다.

  1. MongoDB Atlas 클러스터에서 MongoDB 컬렉션에 대한 JSON schema를 정의합니다. 사용자 지정 정의를 기반으로 컬렉션 스키마 형태를 시행하거나 컬렉션의 문서를 기반으로 생성된 스키마를 사용할 수 있습니다.

  2. 컬렉션 JSON schema를 기준으로 GraphQL 스키마 및 해석기 생성을 실행하세요.

  3. 선택적으로 사용자 지정 해석기를 사용하여 생성된 GraphQL 스키마의 기능을 확장합니다.

App Services는 GraphQL API에 노출하는 데이터의 유형과 해석기를 자동으로 생성합니다. 생성된 유형과 작업은 모두 노출된 각 컬렉션의 기본 유형 이름을 따서 명명됩니다. 유형 이름을 정의하지 않으면 App Services에서 컬렉션 이름을 대신 사용합니다.

컬렉션을 노출시키고 컬렉션의 데이터 유형에 이름을 지정하는 방법에 대한 자세한 내용은 Expose Data in a Collection(컬렉션 내 데이터 노출)을 참조하세요.

참고

GraphQL 변형 및 사용자 지정 해석기 요청은 여러 데이터베이스 작업에서 정확성을 보장하기 위해 MongoDB 트랜잭션을 사용합니다. 요청의 작업 중 하나라도 실패하면 전체 트랜잭션이 실패하고 데이터베이스에 커밋되는 작업이 없습니다.

GraphQL 쿼리 는 한 가지 이상의 유형에서 특정 필드를 요청하는 읽기 연산입니다. App Services는 스키마가 지정된 각 컬렉션 내 문서에 대한 쿼리 유형을 자동으로 생성합니다.

자동으로 생성된 모든 쿼리 유형의 목록 등 자세한 내용 및 예시는 Query Resolvers(쿼리 해석기)를 참조하세요.

# Find a single movie by name
query {
movie(query: { title: "The Matrix" }) {
_id
title
year
runtime
}
}
# Find all movies from the year 2000
query {
movies(query: { year: 2000 }) {
_id
title
year
runtime
}
}
# Find the ten longest movies from the year 2000
query {
movies(
query: { year: 2000 }
sortBy: RUNTIME_DESC
limit: 10
) {
_id
title
year
runtime
}
}

GraphQL 변형은 하나 이상의 문서를 생성, 수정, 삭제하는 쓰기 작업입니다. App Services는 정의된 스키마가 있는 각 collection의 문서에 대한 변형 유형을 자동으로 생성합니다. App Services는 트랜잭션을 사용하여 변형을 통한 안전한 쓰기를 보장합니다.

자동으로 생성된 모든 변형 유형 목록을 포함한 자세한 정보와 예시는 변형 해석기를 참조하세요.

# Insert a new movie
mutation {
insertOneMovie(data: {
title: "Little Women"
director: "Greta Gerwig"
year: 2019
runtime: 135
}) {
_id
title
}
}
# Update the year of a movie
mutation {
updateOneMovie(
query: { title: "The Matrix" }
set: { year: 1999 }
) {
_id
title
}
}
# Delete a movie
mutation {
deleteOneMovie(query: { title: "The Room" }) {
_id
title
}
}
# Delete multiple movies
mutation {
deleteManyMovies(query: { director: "Tommy Wiseau" }) {
_id
title
}
}
  • GraphQL API는 주어진 쿼리 또는 변형에 대해 최대 10개의 해석기를 처리할 수 있습니다. 작업에서 10개보다 많은 해석기를 지정하는 경우 전체 작업이 실패하고 "max number of queries reached" 오류 메시지가 표시됩니다.

  • GraphQL API는 주어진 쿼리 또는 변형에 대해 최대 5개 깊이까지 관계를 해석할 수 있습니다. 작업이 5개의 해석기보다 깊은 관계를 지정하는 경우 전체 작업이 실패하고 "max relationship depth exceeded" 오류 메시지가 표시됩니다.

  • GraphQL API는 컬렉션 스키마가 고유한 제목을 가지고 있을 것으로 예상하며, 데이터 모델에 중복된 제목이 있을 경우 경고를 표시합니다.

    다음과 같은 경우에는 이 경고를 무시해도 됩니다.

    • 제목 충돌은 내장된 객체에만 적용됩니다.

    • 특정 제목이 있는 모든 스키마는 관계를 포함하여 동일한 정의를 사용합니다.

  • GraphQL API는 현재 내장된 객체 배열 내부의 필드에 대한 관계를 지원하지 않습니다. 사용자 지정 리졸버를 사용하여 내장된 객체 배열 관계를 수동으로 조회하고 확인할 수 있습니다.

돌아가기

공유 티어 클러스터 업그레이드