Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Rayfin SDK, veri şemanızı TypeScript'te bir kez tanımladığınız ve üretime hazır API'leri, tür güvenli istemcileri ve altyapıyı otomatik olarak elde ettiğiniz dekoratör temelli bir programlama modeli kullanır.
Temel kavramlar
Rayfin SDK üç temel öğeyi birleştirir:
- Dekoratör temelli şema: Veri modellerini, izinleri ve ilişkileri tanımlamak için TypeScript dekoratörlerini kullanın.
- Otomatik API oluşturma: Dekore edilmiş sınıflarınız denetleyici kodu yazmadan GraphQL uç noktalarına dönüşür.
- Tür açısından güvenli istemciler: Oluşturulan TypeScript istemcileri, sorgular ve mutasyonlar için derleme süresi doğrulaması sağlar.
Nasıl çalışır?
bir Fabric uygulaması oluşturduğunuzda kodunuz şu aşamalarda akar:
| # | Stage | Ne olur? |
|---|---|---|
| 1 | Developer | Uygulamayı istediğiniz düzenleyicide yazarsınız. |
| 2 | TypeScript | TypeScript'te varlık sınıfları yazarsınız. |
| 3 | Decorators | Sınıflara ve alanlara @entity, @uuid, @text, @role ve diğer dekoratörlerle not eklersiniz. |
| 4 | Schema | CLI, dekore edilmiş sınıfları bir veritabanı şeması, izin ilkeleri ve API yapılandırmasında derler. |
| 5 | APIs | Şema GraphQL uç noktaları olarak yayımlanır. |
| 6 | Client | Oluşturulan, RayfinClient bu uç noktalar üzerinde tür açısından güvenli bir veri ve kimlik doğrulaması istemcisi sunar. |
| 7 | Application | Ön uç uygulamanız verileri okumak ve yazmak için istemciyi tüketir. |
1. Dekoratörlerle veri modelleri tanımlama
Veri yapınızı typescript sınıflarını ve dekoratörlerini @microsoft/rayfin-corekullanarak tanımlarsınız:
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. Şema oluşturma
Rayfin CLI (npx rayfin) dekore edilmiş sınıflarınızı analiz eder ve aşağıdakini oluşturur:
- Veritabanı şeması - Tablolar, sütunlar, kısıtlamalar ve dizinler
- API yapılandırması - GraphQL uç nokta tanımları
- İzin ilkeleri - Satır düzeyi güvenlik ve alan düzeyinde erişim denetimi
4. Tür açısından güvenli istemci kullanımı
GraphQL API'leri veritabanınızda CRUD işlemleri gerçekleştirmek için kullanılabilir. Rayfin SDK, verileri okumak, yazmak veya silmek için kullanıma hazır bir veri istemcisi işlemi sağlar.
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();
Dekoratör referansı
Rayfin SDK ortak veri modelleme desenleri için dekoratörler sağlar:
Varlık dekoratörleri
| Dekoratör | Purpose | Example |
|---|---|---|
@entity() |
Sınıfı veritabanı varlığı olarak işaretleme | @entity() class Product |
Özellik dekoratörleri
| Dekoratör | Veritabanı türü | TypeScript türü |
|---|---|---|
@uuid() |
UNIQUEIDENTIFIER | string |
@text() |
NVARCHAR | string |
@int() |
INT | number |
@decimal() |
ONDALIK | number |
@bool() |
BIT | boolean |
@date() |
DATETIME2 | Date |
İzin dekoratörleri
| Dekoratör | Purpose |
|---|---|
@role() |
Rol tabanlı izinleri tanımlama |
Yetkilendirme ayrıntıları için bkz. Veri izinlerini tanımlama .
Geliştirme iş akışı
Tipik bir geliştirme döngüsü şu deseni izler:
- Veri modellerini tanımlama veya değiştirme - TypeScript sınıflarını dekoratörlerle ekleme veya güncelleştirme
-
Uzak arka uçla yerel olarak test edin - ön uç kod değişikliklerinizi Fabric uygulama arka ucunuzda test etmek için
npm run devçalıştırın. -
deploy to Fabric - Yönetilen Fabric hizmetine dağıtmak için
npx rayfin upçalıştırın ve şema değişikliklerinizi uygular.
TypeScript modellerinizdeki değişiklikler, veritabanı şemasından API uç noktalarına ve istemci türlerine kadar yığının tamamına otomatik olarak yayılır.
Authorization
İzinler, dekoratör kullanılarak @role veri modellerinizle birlikte tanımlanır:
@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;
}
Bu yaklaşım şunu sağlar:
- Güvenlik kuralları, korudukları verilerin hemen yanında bulunur
- Tür açısından güvenli ilke ifadeleri derleme zamanında hataları yakalar
- Varlık alanlarını yeniden düzenleme izin denetimlerini otomatik olarak güncelleştirir