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.
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