Megosztás a következőn keresztül:


Azure SQL-adatforrás feloldóhoz

A KÖVETKEZŐKRE VONATKOZIK: Fejlesztő | Alapszintű | Alapszintű v2 | Standard | Standard v2 | Prémium

A sql-data-source feloldó szabályzat konfigurál egy Transact-SQL-kérést (T-SQL) egy Azure SQL-adatbázishoz , és opcionális választ a GraphQL-sémák objektumtípusára és mezőjére vonatkozó adatok feloldására. A sémát GraphQL API-ként kell importálni az API Managementbe.

Feljegyzés

Ez a szabályzat előzetes verzióban érhető el. A szabályzat jelenleg nem támogatott az API Management használati szintjén.

Feljegyzés

Állítsa be a szabályzat elemeit és gyermekelemeit a szabályzatutasításban megadott sorrendben. További információ az API Management-szabályzatok beállításáról és szerkesztéséről.

Szabályzatutasítás

<sql-data-source> 
    <connection-info>
        <connection-string use-managed-identity="true | false">
            Azure SQL connection string
        </connection-string>
        <include-fragment>...include-fragment policy configuration...</include-fragment>
        <authentication-certificate>...authentication-certificate policy configuration...</authentication-certificate>     
    </connection-info>
    <include-fragment>...include-fragment policy configuration...</include-fragment>
    <request single-result="true | false">
        <include-fragment>...include-fragment policy configuration...</include-fragment>
        <set-body>...set-body policy configuration...</set-body>
        <sql-statement>T-SQL query</sql-statement>
        <parameters>
            <parameter sql-type="parameter type" name="Query parameter name in @ notation">
                "Query parameter value or expression"
            </parameter>
            <!-- if there are multiple parameters, then add additional parameter elements -->
        </parameters>
    </request>
    <response>
        <include-fragment>...include-fragment policy configuration...</include-fragment>
        <set-body>...set-body policy configuration...</set-body>
        <publish-event>...publish-event policy configuration...</publish-event>
    </response>
</sql-data-source> 

Elemek

Név Leírás Kötelező
connection-info Az Azure SQL Database-hez való kapcsolatot adja meg. Igen
include-fragment Szabályzattöredék beszúrása a szabályzatdefinícióba. Ha több töredék is van, adjon hozzá további include-fragment elemeket. Nem
Kérés Megadja a feloldó T-SQL-kérését és az opcionális paramétereket. Igen
Válasz Igény szerint gyermekszabályzatokat is megadhat az Azure SQL-adatbázis válaszának konfigurálásához. Ha nincs megadva, a rendszer JSON-ként adja vissza a választ az Azure SQL-ből. Nem

kapcsolat-információs elemek

Feljegyzés

A feljegyzett esetek kivételével az egyes gyermekelemek legfeljebb egyszer adhatók meg. Adja meg a felsorolt sorrend elemeit.

Elem Leírás Kötelező
connection-string Megadja az Azure SQL-kapcsolati sztring. A kapcsolati sztring SQL-hitelesítést (felhasználónév és jelszó) vagy Microsoft Entra-hitelesítést használ, ha egy API Management által felügyelt identitás van konfigurálva. Igen
include-fragment Szabályzattöredék beszúrása a szabályzatdefinícióba. Ha több töredék is van, adjon hozzá további include-fragment elemeket. Nem
hitelesítés-tanúsítvány Hitelesítés ügyféltanúsítvány használatával a feloldó SQL-kérésében. Nem

kapcsolati sztring attribútumai

Attribútum Leírás Kötelező Alapértelmezett
use-managed-identity Logikai. Megadja, hogy az API Management-példány rendszer által hozzárendelt felügyelt identitását használja-e az Azure SQL-adatbázishoz való csatlakozáshoz a felhasználónév és a jelszó helyett a kapcsolati sztring. A szabályzatkifejezések engedélyezettek.

Az identitást úgy kell konfigurálni , hogy hozzáférjen az Azure SQL-adatbázishoz.
Nem false

request attribútum

Attribútum Leírás Kötelező Alapértelmezett
egyetlen eredmény Logikai. Meghatározza, hogy a lekérdezésre adott válasz legfeljebb egy sort ad-e vissza. A szabályzatkifejezések engedélyezettek. Nem false

kérelemelemek

Feljegyzés

Az egyes gyermekelemek legfeljebb egyszer adhatók meg. Adja meg a felsorolt sorrend elemeit.

Elem Leírás Kötelező
include-fragment Szabályzattöredék beszúrása a szabályzatdefinícióba. Nem
set-body Beállítja a törzset a feloldó SQL-kérésében. Nem
sql-utasítás T-SQL-utasítás az Azure SQL-adatbázisra irányuló kéréshez. Az SQL-utasítás több független alállapotot is tartalmazhat, például az UPDATE, a DELETE és a Standard kiadás LECT függvényt, amelyek sorozatban lesznek végrehajtva. Az eredmények a végső részállapotból lesznek visszaadva. Igen
paraméterek A kérelem SQL-paramétereinek listája alelemekben parameter . Nem

paraméterattribútumok

Attribútum Leírás Kötelező Alapértelmezett
név Karakterlánc. Az SQL-paraméter neve. Igen n/a
sql-type Karakterlánc. Az SQL-paraméter adattípusa . Nem N.A.

válaszelemek

Feljegyzés

Az egyes gyermekelemek legfeljebb egyszer adhatók meg. Adja meg a felsorolt sorrend elemeit.

Név Leírás Kötelező
include-fragment Szabályzattöredék beszúrása a szabályzatdefinícióba. Nem
set-body Beállítja a törzset a feloldó válaszában. Nem
közzétételi esemény Esemény közzététele a GraphQL API-sémában megadott egy vagy több előfizetésben. Nem

Használat

Használati megjegyzések

  • A feloldó ezzel a szabályzattal történő konfigurálásához és kezeléséhez lásd : GraphQL-feloldó konfigurálása.
  • Ez a szabályzat csak akkor lesz meghívva, ha a séma egy egyező művelettípusában lévő egyetlen mezőt old fel.

Felügyelt identitásintegráció konfigurálása az Azure SQL-vel

Az SQL-hitelesítés felhasználónévvel és jelszóval történő konfigurálása helyett konfigurálhat egy API Management rendszer által hozzárendelt felügyelt identitást az Azure SQL-hez való hozzáféréshez. A háttérben lásd : Microsoft Entra-hitelesítés konfigurálása és kezelése az Azure SQL-lel.

Előfeltételek

A Microsoft Entra ID-hozzáférés engedélyezése

Engedélyezze a Microsoft Entra-hitelesítést az SQL Database-hez egy Microsoft Entra-felhasználó hozzárendelésével a kiszolgáló rendszergazdájaként.

  1. A portálon nyissa meg az Azure SQL Servert.
  2. Válassza ki a Microsoft Entra ID.
  3. Válassza a Rendszergazda beállítása lehetőséget, és válassza ki saját magát vagy azt a csoportot, amelyhez tartozik.
  4. Válassza a Mentés lehetőséget.

Szerepkörök hozzárendelése

  1. A portálon nyissa meg az Azure SQL-adatbázis-erőforrást.

  2. Válassza a Lekérdezésszerkesztő (előzetes verzió) elemet.

  3. Bejelentkezés Active Directory-hitelesítéssel.

  4. Hajtsa végre a következő SQL-szkriptet. Cserélje le <identity-name> az API Management-példány nevére.

    CREATE USER [<identity-name>] FROM EXTERNAL PROVIDER;
    ALTER ROLE db_datareader ADD MEMBER [<identity-name>];
    ALTER ROLE db_datawriter ADD MEMBER [<identity-name>];
    ALTER ROLE db_ddladmin ADD MEMBER [<identity-name>];
    GO
    

Példák

Példaséma

Az ebben a szakaszban szereplő példák a következő GraphQL-séma feloldói:

type Family {
  id: Int!
  name: String!
}

type Person {
  id: Int!
  name: String!
}

type PersonQueryResult {
  items: [Person]  
}

type Query {
  familyById(familyId: Int!): Family
  familyMembers(familyId: Int!): PersonQueryResult
}

type Mutation {
  createFamily(familyId: Int!, familyName: String!): Family
}

A GraphQL-lekérdezés feloldója egyeredményű T-SQL-kéréssel

Az alábbi példa egy GraphQL-lekérdezést old fel úgy, hogy egy egyeredményes T-SQL-kérést küld egy háttérbeli Azure SQL-adatbázisnak. A kapcsolati sztring felhasználónévvel és jelszóval rendelkező SQL-hitelesítést használ, és névvel ellátott értékkel van megadva. A válasz egyetlen, egyetlen sort képviselő JSON-objektumként lesz visszaadva.

<sql-data-source>
    <connection-info>
        <connection-string>
            {{my-connection-string}}
        </connection-string>
    </connection-info>
    <request single-result="true">
        <sql-statement>
            SELECT 
                f.[Id] AS [id]
                f.[Name] AS [name]
            WHERE @familyId = f.[Id] 
        </sql-statement> 
        <parameters> 
            <parameter name="@familyId">       
                @(context.GraphQL.Arguments["id"])
            </parameter> 
        </parameters> 
    </request>
    <response />
</sql-data-source>

GraphQL-lekérdezés feloldója átalakított többsoros lekérdezési válaszsal

Az alábbi példa egy GraphQL-lekérdezést old fel T-SQL-lekérdezéssel egy Azure SQL-adatbázisba. Az adatbázishoz való csatlakozás az API Management-példány rendszer által hozzárendelt felügyelt identitását használja. Az identitást úgy kell konfigurálni , hogy hozzáférjen az Azure SQL-adatbázishoz.

A lekérdezési paraméter a context.GraphQL.Arguments környezeti változóval érhető el. A többsoros lekérdezési válasz a szabályzattal set-body likvid sablonnal lesz átalakítva.

<sql-data-source> 
    <connection-info>
        <connection-string use-managed-identity="true">
            Server=tcp:{your_server_name}.database.windows.net,1433;Initial Catalog={your_database_name}; 
        </connection-string>
    </connection-info> 
    <request> 
        <sql-statement> 
            SELECT 
                p.[Id] AS [Id] 
                p.[FirstName] AS [FirstName] 
                p.[LastName] AS [LastName] 
            FROM [Person] p 
            JOIN [Family] f ON p.[FamilyId] = f.[Id] 
            WHERE @familyId = f.[Id] 
        </sql-statement> 
        <parameters> 
            <parameter name="@familyId">       
                @(context.GraphQL.Arguments["id"])
            </parameter> 
        </parameters> 
    </request> 
    <response> 
        <set-body template="liquid"> 
            { 
                "items": [ 
                    {% JSONArray For person in body.items %} 
                        "id": "{{ person.id }}" 
                        "name": "{{ person.firstName }} + "" "" + {{body.lastName}}" 
                    {% endJSONArrayFor %} 
                ] 
            } 
        </set-body> 
  </response> 
</sql-data-source>

A GraphQL-mutáció feloldója

Az alábbi példa egy GraphQL-mutációt old fel egy T-SQL IN Standard kiadás RT utasítással egy sor beszúrásához egy Azure SQL-adatbázisba. Az adatbázishoz való csatlakozás az API Management-példány rendszer által hozzárendelt felügyelt identitását használja. Az identitást úgy kell konfigurálni , hogy hozzáférjen az Azure SQL-adatbázishoz.

<sql-data-source> 
    <connection-info>
        <connection-string use-managed-identity="true">
            Server=tcp:{your_server_name}.database.windows.net,1433;Initial Catalog={your_database_name};</connection-string>
    </connection-info> 
    <request single-result="true"> 
        <sql-statement> 
                INSERT INTO [dbo].[Family]
                       ([Id]
                       ,[Name])
                VALUES
                       (@familyId
                       , @familyName)

                SELECT
                    f.[Id] AS [id],
                    f.[Name] AS [name]
                FROM [Family] f
                WHERE @familyId = f.[Id]
        </sql-statement> 
        <parameters> 
            <parameter name="@familyId">       
                @(context.GraphQL.Arguments["id"])
            </parameter>
            <parameter name="@familyName">       
                @(context.GraphQL.Arguments["name"])
            </parameter> 
        </parameters> 
    </request>    
</sql-data-source>

A szabályzatok használatával kapcsolatos további információkért lásd: