Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A Rayfin SDK egy dekoratőralapú programozási modellt használ, amelyben az adatsémát egyszer adja meg TypeScriptben, és automatikusan fogad éles használatra kész API-kat, típusbiztos ügyfeleket és infrastruktúrát.
főbb fogalmak
A Rayfin SDK három alapvető elemet egyesít:
- Dekoratőr-alapú séma: TypeScript-dekorátorok használatával definiálhat adatmodelleket, engedélyeket és kapcsolatokat.
- Automatikus API-létrehozás: A kitüntetett osztályok GraphQL-végpontokká válnak vezérlőkód írása nélkül.
- Típusbiztos ügyfelek: A létrehozott TypeScript-ügyfelek fordítási idejű ellenőrzést biztosítanak a lekérdezésekhez és a mutációkhoz.
Hogyan működik?
Fabric-alkalmazás létrehozásakor a kód az alábbi szakaszokon halad végig:
| # | Stage | Mi történik? |
|---|---|---|
| 1 | fejlesztő | Az alkalmazást a választott szerkesztőben szerkesztheti. |
| 2 | TypeScript | Entitásosztályokat ír a TypeScriptben. |
| 3 | Decorators | Az osztályokat és mezőket a(z) @entity, @uuid, @text, @role és más dekorátorok használatával annotálhatja. |
| 4 | Schema | A parancssori felület a kitüntetett osztályokat adatbázisséma, engedélyszabályzatok és API-konfigurációkká állítja össze. |
| 5 | API-k | A séma GraphQL-végpontként van közzétéve. |
| 6 | Client | A generált RayfinClient egy típusbiztos adat- és hitelesítési klienst tesz elérhetővé ezeken a végpontokon keresztül. |
| 7 | Application | A frontendalkalmazás a klienst használja az adatok olvasására és írására. |
1. Adatmodellek definiálása dekorátorokkal
Az adatstruktúrát TypeScript-osztályokkal és dekorátorokkal határozhatja meg a következőből @microsoft/rayfin-core:
import { entity, uuid, text, int } from '@microsoft/rayfin-core';
@entity()
export class Product {
@uuid() id!: string;
@text() name!: string;
@text({ optional: true }) description?: string;
@int() price!: number;
}
2. Séma létrehozása
A Rayfin CLI (npx rayfin) elemzi a dekorált osztályokat, és a következőket hozza létre:
- Adatbázisséma – Táblák, oszlopok, korlátozások és indexek
- API-konfiguráció – GraphQL-végpontdefiníciók
- Engedélyszabályzatok – Sorszintű biztonság és mezőszintű hozzáférés-vezérlés
4. A típusbiztos kliens használata
A GraphQL API-k a CRUD-műveletek adatbázison való végrehajtásához érhetők el. A Rayfin SDK egy adatügyfél-műveletet biztosít a dobozon kívül az adatok olvasásához vagy írásához vagy törléséhez.
import { RayfinClient } from '@microsoft/rayfin-client';
const client = new RayfinClient();
// TypeScript knows about Product fields
const products = await client.data.products.query()
.select(['id', 'name', 'price'])
.execute();
// Compile-time error if field doesn't exist
const invalid = await client.data.products.query()
.select(['nonexistentField']) // ❌ TypeScript error
.execute();
Dekorátor referenciája
A Rayfin SDK dekorátorokat biztosít a gyakori adatmodellezési mintákhoz:
Entitás-dekorátorok
| Lakberendező | Alkalmazás célja | Example |
|---|---|---|
@entity() |
Osztály megjelölése adatbázis-entitásként | @entity() class Product |
Ingatlan dekorátorok
| Lakberendező | Adatbázis típusa | TypeScript-típus |
|---|---|---|
@uuid() |
UNIQUEIDENTIFIER | string |
@text() |
NVARCHAR | string |
@int() |
INT | number |
@decimal() |
TIZEDES | number |
@bool() |
BIT | boolean |
@date() |
DATETIME2 | Date |
Jogosultságdekorátorok
| Lakberendező | Alkalmazás célja |
|---|---|
@role() |
Szerepköralapú engedélyek definiálása |
Lásd: Adatengedélyek meghatározása az engedélyezési adatokhoz.
Functions
Hozz létre egy UserDataFunctions példányt, és regisztráljunk minden függvényt a hívással udf.func(name, handler, connections?).
Kövesse ezeket a szabályokat, amikor meghatározod egy függvényt:
- Helyezze a
RayfinContextparamétert a kezelő aláírás bármely helyére. A futtatókörnyezet típus alapján azonosítja, injektálja, és kizárja a generált függvény bemeneti paraméterei közül. - Deklaráljon egy kapcsolatot a függvény által igényelt minden delegált tokenhez. Hagyd ki a connections tömböt azoknál a függvényeknél, amelyek csak app adatokhoz férnek hozzá, vagy nem igényelnek delegált tokeneket.
Az alábbi példa egy egyszerű függvényt és egy olyan függvényt regisztrál, amely az invocation kontextust használja:
import {
UserDataFunctions,
type RayfinContext,
} from '@microsoft/fabric-user-data-functions';
// Match rayfin/data/schema.ts so getDataClient() is fully typed.
import type { TripPlan } from '../../data/TripPlan.js';
type AppSchema = { TripPlan: TripPlan };
const udf = new UserDataFunctions();
udf.func('greet', async (name: string): Promise<string> => {
return `Hello, ${name}!`;
});
udf.func(
'whoAmI',
async (ctx: RayfinContext<AppSchema>): Promise<string> => {
return ctx.accessToken ? 'authenticated' : 'anonymous';
},
);
Biztosítja RayfinContext a funkció futási idejű szolgáltatásait:
| Tag | Alkalmazás célja |
|---|---|
ctx.accessToken |
Biztosítja a bejelentkezett felhasználó Rayfin JSON Web Tokenjét (JWT). Dekódold a sub jogcímet a stabil felhasználói azonosító lekéréséhez. |
ctx.Tokens.<Audience> |
Platform által biztosított erőforrás tokent kap egy annotációban bejelentett RayfinContext közönség számára. A telepített függvények az alkalmazás identitását és annak jogosultságait használják. Részletekért lásd: Kapcsolja a függvényeket külső erőforrásokhoz. |
ctx.getSecret('NAME') |
Lekéri az aktuális meghívás titkát.
undefined értéket ad vissza, ha a titok nincs beállítva. |
ctx.getDataClient() |
Lekéri az entitásaihoz tartozó típusos adatok API-ját. A kliens támogatja a létrehozási, findMany frissítési, törlési és upsert műveleteket. |
ctx.baseUrl |
Megadja a Rayfin végpontját az aktuális elemhez. |
ctx.publishableKey |
Megadja a jelenlegi tétel publikálható kulcsát. |
A beállítás, helyi hibakeresés és telepítési utasítások esetén lásd: Használd a funkciókat a Fabric Apps-ben.
Fejlesztési munkafolyamat
Egy tipikus fejlesztési ciklus a következő mintát követi:
- Adatmodellek definiálása vagy módosítása – TypeScript-osztályok hozzáadása vagy frissítése dekorátorokkal
-
Helyi tesztelés távoli háttérrendszerrel - A
npm run devfuttatásával tesztelheti a frontendkód módosításait a Fabricben található alkalmazás-háttérrendszerrel. -
Deploy to Fabric – Futtassa a
npx rayfin upparancsot a felügyelt Fabric szolgáltatásban való üzembe helyezéshez, és alkalmazza a séma módosításait.
A TypeScript-modellek módosításai automatikusan végigterjednek a teljes technológiai rétegen — az adatbázissémától az API-végpontokon át a kliensoldali típusokig.
Authorization
A jogosultságok az adatmodellek mellett, a @role dekorátorral vannak definiálva:
@entity()
@role('authenticated', ['create', 'read', 'update', 'delete'], {
policy: (claims, item) => claims.sub.eq(item.userId)
})
export class UserDocument {
@uuid() id!: string;
@text() userId!: string;
@text() content!: string;
}
Ez a megközelítés a következőket biztosítja:
- A biztonsági szabályok közvetlenül az általuk védett adatok mellett vannak.
- A típusbiztos szabályzatkifejezések fordítási időben kiszűrik a hibákat
- Az entitásmezők újrabontása automatikusan frissíti az engedélyellenőrzéseket