다음을 통해 공유


데이터 API 작성기에서 구성 파일 환경 사용

이 가이드에서는 구성 파일을 사용하여 개발 환경을 대상으로 지정하는 단계를 안내합니다. 최종 결과 구성 파일은 최소한의 변경으로 나중에 프로덕션 데이터베이스 구성을 추가할 수 있을 만큼 유연해야 합니다.

사전 요구 사항

SQL 테이블 및 데이터 Create

이 예제 시나리오에서 사용할 가상 데이터가 있는 테이블을 Create.

  1. 원하는 클라이언트 또는 도구를 사용하여 SQL 서버 및 데이터베이스에 연결합니다. 예를 들어 SQL Server Management Studio, Azure Data StudioVisual Studio Code대한 SQL Server 확장이 있지만 이에 국한되지 않습니다.

  2. name 열을 사용하여 라는 Booksid 테이블을 Create.

    DROP TABLE IF EXISTS dbo.Books;
    
    CREATE TABLE dbo.Books
    (
        id int NOT NULL PRIMARY KEY,
        title nvarchar(1000) NOT NULL,
        [year] int null,
        [pages] int null
    );
    GO
    
  3. 표에 4개의 샘플 책 행을 Books 삽입합니다.

    INSERT INTO dbo.Books VALUES
        (1000, 'Practical Azure SQL Database for Modern Developers', 2020, 326),
        (1001, 'SQL Server 2019 Revealed: Including Big Data Clusters and Machine Learning', 2019, 444),
        (1002, 'Azure SQL Revealed: A Guide to the Cloud for SQL Server Professionals', 2020, 528),
        (1003, 'SQL Server 2022 Revealed: A Hybrid Data Platform Powered by Security, Performance, and Availability', 2022, 506)
    GO
    
  4. 간단한 SELECT * 쿼리를 사용하여 데이터를 테스트합니다.

    SELECT * FROM dbo.Books
    

Create 기본 구성 파일

DAB CLI를 사용하여 기준 구성 파일을 Create.

  1. 를 사용하여 dab init일반적인 구성 파일을 Create.

    dab init --database-type "mssql" --host-mode "Development"
    
  2. 를 사용하여 Book 엔터티를 dab add추가합니다.

    dab add Book --source "dbo.Books" --permissions "anonymous:*"
    
  3. 현재 dab-config.json 구성 파일을 관찰합니다. 파일에는 단일 엔터티, REST API 엔드포인트 및 GraphQL 엔드포인트가 있는 API의 기준 구현이 포함되어야 합니다.

    {
      "$schema": "https://github.com/Azure/data-api-builder/releases/download/v0.10.23/dab.draft.schema.json",
      "data-source": {
        "database-type": "mssql",
        "connection-string": "",
        "options": {
          "set-session-context": false
        }
      },
      "runtime": {
        "rest": {
          "enabled": true,
          "path": "/api",
          "request-body-strict": true
        },
        "graphql": {
          "enabled": true,
          "path": "/graphql",
          "allow-introspection": true
        },
        "host": {
          "cors": {
            "origins": [],
            "allow-credentials": false
          },
          "authentication": {
            "provider": "StaticWebApps"
          },
          "mode": "development"
        }
      },
      "entities": {
        "Book": {
          "source": {
            "object": "dbo.Books",
            "type": "table"
          },
          "graphql": {
            "enabled": true,
            "type": {
              "singular": "Book",
              "plural": "Books"
            }
          },
          "rest": {
            "enabled": true
          },
          "permissions": [
            {
              "role": "anonymous",
              "actions": [
                {
                  "action": "*"
                }
              ]
            }
          ]
        }
      }
    }
    

환경 변수 파일 Create

이제 환경 파일을 추가하여 DAB에 대한 환경 변수를 저장합니다.

  1. DAB CLI 구성 파일과 동일한 디렉터리에 라는 .env 파일을 Create.

참고

.env 파일 이름(예.gitignore: 및 .editorconfig 파일)에는 파일 이름이 없고 파일 확장명만 있습니다. 이름은 대/소문자를 구분하지 않지만 규칙은 소문자입니다.

  1. 값이 인 DAB_ENVIRONMENT 환경 변수를 추가합니다 Development. 또한 데이터베이스 연결 문자열 사용하여 환경 변수를 추가 SQL_DOCKER_CONNECTION_STRING 합니다.

    SQL_DOCKER_CONNECTION_STRING=<connection-string>
    DAB_ENVIRONMENT=Development
    

Create 환경 구성 파일

마지막으로 현재 구성과 원하는 환경 구성 사이에 델타가 있는 개발 구성 파일을 추가합니다.

  1. dab-config.Development.json 파일을 만듭니다. 다음 콘텐츠를 추가하여 함수를 @env() 사용하여 개발 환경에서 값을 설정합니다 connection-string .

    {
      "$schema": "<https://github.com/Azure/data-api-builder/releases/latest/download/dab.draft.schema.json>",
      "data-source": {
        "database-type": "mssql",
        "connection-string": "@env('SQL_DOCKER_CONNECTION_STRING')"
      }
    }
    
  2. 변경 내용을 .env, dab-config.jsondab-config에 저장합니다. 파일을 Development.json.

테스트 설정

  1. 를 사용하여 dab start 도구가 예상대로 시작되는지 유효성을 검사합니다.

    dab start
    
  2. 도구의 출력에는 실행 중인 API로 이동하는 데 사용할 주소가 포함되어야 합니다.

          Successfully completed runtime initialization.
    info: Microsoft.Hosting.Lifetime[14]
          Now listening on: <http://localhost:5000>
    info: Microsoft.Hosting.Lifetime[0]
    

    이 예제에서 애플리케이션은 포트 5000에서 실행됩니다localhost. 실행 중인 애플리케이션의 주소와 포트가 다를 수 있습니다.

  3. 먼저 에 GET 요청을 실행하여 API를 수동으로 시도합니다 /api/Book.

    이 예제에서 URL은 입니다 https://localhost:5000/api/Book. 웹 브라우저를 사용하여 이 URL로 이동할 수 있습니다.

  4. 다음으로, 의 Swagger 설명서 페이지로 /swagger이동합니다.

    이 예제에서 URL은 입니다 <https://localhost:5000/swagger. 다시 웹 브라우저를 사용하여 이 URL로 이동할 수 있습니다.

  5. 마지막으로 이 작업을 탐색하고 실행하여 GraphQL 엔드포인트를 /graphql 시도합니다.

    query {
      books(filter: {
        pages: {
          lt: 500
        }
      }) {
        items {
          id
          title
          year
          pages
        }
      }
    }
    

    이 예제에서 URL은 입니다 https://localhost:5000/graphql. 다시 웹 브라우저를 사용하여 이 URL로 이동할 수 있습니다.