다음을 통해 공유


가상 GraphQL API 추가 및 필드 해결 프로그램 설정

적용 대상: 모든 API Management 계층

API Management에서는 두 가지 모델 중 하나에 GraphQL API를 추가할 수 있습니다. 즉, 기존 GraphQL 엔드포인트로 통과하거나 GraphQL 스키마를 가져오고 사용자 지정 필드 해결 프로그램을 사용하여 가상 GraphQL API를 만듭니다. 자세한 내용은 GraphQL 개요를 참조하세요.

참고 항목

현재 이 기능은 작업 영역에서 사용할 수 없습니다.

이 문서에서는 다음을 수행합니다.

  • GraphQL 스키마를 Azure API Management 인스턴스로 가져옵니다.
  • 기존 HTTP 엔드포인트를 사용하여 GraphQL 쿼리에 대한 확인자를 설정합니다.
  • GraphQL API를 테스트합니다.

기존 GraphQL 엔드포인트를 API로 노출하려면 GraphQL API 가져오기를 참조하세요.

필수 조건

  • 기존 API Management 인스턴스. 구독이 아직 없다면 하나를 만듭니다.
  • .graphql 확장명이 있는 유효한 GraphQL 스키마 파일.
  • 이 시나리오에서는 백 엔드 GraphQL 엔드포인트가 선택 사항입니다.

API Management 인스턴스로 이동

  1. Azure Portal에서 API Management 서비스를 검색하고 선택합니다.

    검색 결과에서 API Management 서비스를 보여 주는 스크린샷

  2. API Management 서비스 페이지에서 API Management 인스턴스를 선택합니다.

    API Management 서비스 페이지의 API Management 인스턴스를 보여 주는 스크린샷

GraphQL 스키마 추가

  1. 왼쪽 창의 API 아래에서 API를 선택합니다.

  2. 새 API 정의에서 GraphQL 타일을 선택합니다.

    GraphQL 타일을 선택하는 스크린샷

  3. 대화 상자에서 전체를 선택한 다음 다음 표에 설명된 대로 필수 필드에 값을 입력합니다.

    GraphQL 스키마에서 만들기 페이지의 스크린샷.

    가치 설명
    표시 이름 GraphQL API가 표시되는 이름입니다.
    이름 GraphQL API의 원시 이름입니다. 표시 이름을 입력하면 자동으로 채워집니다.
    GraphQL 형식 가상 GraphQL을 선택하여 GraphQL 스키마 파일에서 가져옵니다.
    대체 GraphQL 엔드포인트 필요에 따라 GraphQL API 엔드포인트 이름이 있는 URL을 입력합니다. API Management는 사용자 지정 확인자가 필드에 대해 설정되지 않은 경우 이 엔드포인트에 GraphQL 쿼리를 전달합니다.
    설명 API에 대한 설명을 추가합니다.
    URL 구성표 GraphQL 엔드포인트에 따라 구성표를 선택합니다. GraphQL API에 구독 유형이 포함된 경우 WebSocket 구성표(WS 또는 WSS)가 포함된 옵션 중 하나를 선택합니다. 기본 선택은 HTTP(S)입니다.
    API URL 접미사 URL 접미사를 추가하여 API Management 인스턴스에서 특정 API를 식별합니다. API Management 인스턴스에서 고유해야 합니다.
    기준 URL API 기본 URL을 표시하는 초기화할 수 없는 필드입니다.
    태그 필요에 따라 GraphQL API를 새 태그 또는 기존 태그와 연결합니다.
    제품 GraphQL API를 제품과 연결하여 게시합니다.
    API 버전 관리 GraphQL API에 버전 관리 체계를 적용하려면 확인란을 선택합니다.
  4. 만들기를 실행합니다.

  5. API를 만든 후 스키마 탭에서 스키마를 검토하거나 수정합니다.

레졸버 구성

스키마의 필드를 기존 HTTP 엔드포인트에 매핑하도록 해결 프로그램을 구성합니다. 여기서는 고수준의 단계를 제공합니다. 자세한 내용은 GraphQL 해결 프로그램 구성을 참조하세요.

다음 기본 GraphQL 스키마를 가져와서 쿼리에 대한 users 확인자를 설정하려고 하는 경우를 가정해 보겠습니다.

type Query {
    users: [User]
}

type User {
    id: String!
    name: String!
}
  1. 왼쪽 창의 API 아래에서 API를 선택합니다.

  2. GraphQL API를 선택합니다.

  3. 스키마 탭에서 해결자를 구성하려는 개체 형식의 필드에 대한 스키마를 확인합니다.

    1. 필드를 선택한 다음 왼쪽 여백의 포인터를 가리킵니다.

    2. 해결사 추가를 선택합니다.

      포털에서 GraphQL 확인자를 추가하는 스크린샷

  4. 리졸버 만들기 창에서 다음을 수행합니다.

    1. 원하는 경우 Name 속성을 업데이트하고 선택적으로 설명을 입력하고 형식필드 선택 항목을 확인하거나 업데이트합니다.
    2. 데이터 원본에서 HTTP API를 선택합니다.
  5. 해결 프로그램 정책 편집기에서 시나리오의 자식 요소로 <http-data-source> 요소를 업데이트합니다. 예를 들어, 다음 확인자는 기존 HTTP 데이터 원본에 GET 호출을 하여 users 필드를 검색합니다.

        <http-data-source>
            <http-request>
                <set-method>GET</set-method>
                <set-url>https://myapi.contoso.com/users</set-url>
            </http-request>
        </http-data-source>
    

    포털에서 해결 프로그램 정책을 구성하는 스크린샷.

  6. 만들기를 실행합니다.

  7. 스키마의 다른 필드에 대한 데이터를 확인하려면 이전 단계를 반복하여 다른 확인자를 만듭니다.

해결 프로그램 정책을 편집할 때 테스트 실행을 선택하여 스키마에 대해 유효성을 검사할 수 있는 데이터 원본에서 출력을 검사합니다. 오류가 발생하면 응답에 문제 해결 정보가 포함됩니다.

GraphQL API 테스트

  1. API Management 인스턴스로 이동합니다.

  2. 왼쪽 창의 API 섹션에서 API를 선택합니다.

  3. 모든 API 아래에서 GraphQL API를 선택합니다.

  4. 테스트 탭을 선택하여 테스트 콘솔에 액세스합니다.

  5. 헤더 아래에서 다음을 수행합니다.

    1. 이름 메뉴에서 헤더를 선택합니다.
    2. 상자에 값을 입력합니다.
    3. 헤더 추가를 선택하여 헤더를 더 추가합니다.
    4. 휴지통 단추를 사용하여 헤더를 삭제합니다.
  6. GraphQL API에 제품을 추가한 경우 제품 범위 적용 아래에 제품 범위를 추가합니다.

  7. 쿼리 편집기에서 다음 중 하나를 수행합니다.

    1. 편집기 왼쪽 메뉴의 목록에서 하나 이상의 필드 또는 하위 필드를 선택합니다. 선택한 필드와 하위 필드가 쿼리 편집기에 표시됩니다.

    2. 쿼리 편집기에서 입력을 시작하여 쿼리를 작성합니다.

      쿼리 편집기의 스크린샷.

  8. 쿼리 변수 아래에서 동일한 쿼리 또는 변형을 다시 사용하고 다른 값을 전달하는 변수를 추가합니다.

  9. 보내기를 선택합니다.

  10. 응답을 봅니다.

    테스트 쿼리 응답의 스크린샷.

  11. 이전 단계를 반복하여 다른 페이로드를 테스트합니다.

  12. 테스트를 마쳤으면 테스트 콘솔을 종료합니다.

GraphQL API 보호

GraphQL 관련 공격으로부터 보호하기 위해 기존 인증 및 권한 부여 정책GraphQL 유효성 검사 정책을 모두 적용하여 GraphQL API를 보호합니다.