Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Rayfin SDK wykorzystuje model programowania oparty na dekoratorach, w którym jeden raz definiujesz schemat danych w TypeScript, a następnie automatycznie otrzymujesz gotowe do wdrożenia produkcyjnego interfejsy API, klienty z bezpiecznym typowaniem oraz infrastrukturę.
Kluczowe pojęcia
Zestaw Rayfin SDK łączy trzy podstawowe elementy:
- Schemat oparty na dekoratorze: użyj dekoratorów języka TypeScript do definiowania modeli danych, uprawnień i relacji.
- Automatyczne generowanie interfejsu API: Klasy ozdobione stają się punktami końcowymi GraphQL bez pisania kodu kontrolera.
- Klienci z bezpiecznym typowaniem: Wygenerowani klienci TypeScript zapewniają walidację zapytań i mutacji na etapie kompilacji.
Jak to działa
Podczas tworzenia aplikacji Fabric kod przechodzi przez następujące etapy:
| # | Etapie | Co się stanie |
|---|---|---|
| 1 | Deweloper | Możesz utworzyć aplikację w wybranym edytorze. |
| 2 | TypeScript | Klasy jednostek są pisane w języku TypeScript. |
| 3 | Decorators | Opatrujesz klasy i pola adnotacjami za pomocą dekoratorów @entity, @uuid, @text, @role i innych. |
| 4 | Schema | CLI kompiluje dekorowane klasy do postaci schematu bazy danych, zasad uprawnień i konfiguracji interfejsu API. |
| 5 | APIs | Schemat jest udostępniany jako punkty końcowe GraphQL. |
| 6 | Client | Wygenerowany RayfinClient udostępnia bezpiecznego typowo klienta danych i uwierzytelniania dla tych punktów końcowych. |
| 7 | Application | Aplikacja frontendowa korzysta z klienta do odczytu i zapisu danych. |
1. Definiowanie modeli danych za pomocą dekoratorów
Struktura danych jest definiowana przy użyciu klas TypeScript i dekoratorów z klasy @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. Generowanie schematu
Interfejs wiersza polecenia Rayfin (npx rayfin) analizuje klasy ozdobione i generuje:
- Schemat bazy danych — tabele, kolumny, ograniczenia i indeksy
- Konfiguracja interfejsu API — definicje punktów końcowych graphQL
- Zasady uprawnień — zabezpieczenia na poziomie wiersza i kontrola dostępu na poziomie pola
4. Korzystanie z klienta bezpieczne pod względem typów
Interfejsy API GraphQL są dostępne do wykonywania operacji CRUD na Twojej bazie danych. Rayfin SDK domyślnie udostępnia operację klienta danych do odczytu, zapisu i usuwania danych.
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();
Dokumentacja referencyjna dekoratora
Zestaw Rayfin SDK udostępnia dekoratory dla typowych wzorców modelowania danych:
Dekoratory jednostek
| Dekorator | Purpose | Example |
|---|---|---|
@entity() |
Oznaczanie klasy jako jednostki bazy danych | @entity() class Product |
Dekoratory właściwości
| Dekorator | Typ bazy danych | typ TypeScript |
|---|---|---|
@uuid() |
UNIQUEIDENTIFIER | string |
@text() |
NVARCHAR | string |
@int() |
INT | number |
@decimal() |
DZIESIĘTNA | number |
@bool() |
BIT | boolean |
@date() |
DATETIME2 | Date |
Dekoratory uprawnień
| Dekorator | Purpose |
|---|---|
@role() |
Definiowanie uprawnień opartych na rolach |
Aby uzyskać szczegółowe informacje o autoryzacji, zobacz Definiowanie uprawnień danych .
Przepływ pracy deweloperskiej
Typowy cykl programowania jest zgodny z tym wzorcem:
- Definiowanie lub modyfikowanie modeli danych — dodawanie lub aktualizowanie klas TypeScript za pomocą dekoratorów
-
Przetestuj lokalnie przy użyciu zdalnego backendu — uruchom
npm run dev, aby przetestować zmiany w kodzie frontendu z backendem aplikacji w Fabric. -
Wdróż do usługi Fabric - Uruchom
npx rayfin up, aby wdrożyć do zarządzanej usługi Fabric i zastosować zmiany w schemacie.
Zmiany modeli TypeScript są automatycznie propagowane przez cały stos — ze schematu bazy danych do punktów końcowych interfejsu API po typy klientów.
Authorization
Uprawnienia są definiowane wraz z modelami danych przy użyciu dekoratora @role :
@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;
}
Takie podejście zapewnia:
- Reguły zabezpieczeń znajdują się przy danych, które chronią
- Wyrażenia zasad bezpieczne pod względem typów wykrywają błędy w czasie kompilacji
- Refaktoryzacja pól jednostek automatycznie aktualizuje kontrole uprawnień