Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Le Kit de développement logiciel (SDK) Rayfin utilise un modèle de programmation décoratif où vous définissez votre schéma de données une fois dans TypeScript et recevez automatiquement des API prêtes pour la production, des clients de type sécurisés et une infrastructure.
Concepts clés
Rayfin SDK combine trois éléments principaux :
- Schéma orienté décorateur : utilisez des décorateurs TypeScript pour définir des modèles de données, des autorisations et des relations.
- Génération automatique d’API : vos classes décorées deviennent des points de terminaison GraphQL sans écrire de code de contrôleur.
- Clients de type sécurisé : les clients TypeScript générés fournissent une validation au moment de la compilation pour les requêtes et les mutations.
Fonctionnement
Lorsque vous créez une application Fabric, votre code passe par les étapes suivantes :
| # | Stage | Que se passe-t-il ? |
|---|---|---|
| 1 | Développeur | Vous créez l’application dans votre éditeur de choix. |
| 2 | TypeScript | Vous écrivez des classes d’entité dans TypeScript. |
| 3 | Decorators | Vous annotez des classes et des champs avec @entity, , @uuid@text, @roleet d’autres décorateurs. |
| 4 | Schema | L’interface CLI compile les classes décorées dans un schéma de base de données, des stratégies d’autorisation et une configuration d’API. |
| 5 | API | Le schéma est publié sous forme de points de terminaison GraphQL. |
| 6 | Client | Le client RayfinClient généré expose des données et un client d’authentification de type sécurisé sur ces points de terminaison. |
| 7 | Application | Votre application frontale consomme le client pour lire et écrire des données. |
1. Définir des modèles de données avec des décorateurs
Vous définissez votre structure de données à l’aide de classes TypeScript et de décorateurs à partir de @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. Génération de schéma
Rayfin CLI (npx rayfin) analyse vos classes décorées et génère :
- Schéma de base de données - Tables, colonnes, contraintes et index
- Configuration de l’API - Définitions de point de terminaison GraphQL
- Stratégies d’autorisation - Sécurité au niveau des lignes et contrôle d’accès au niveau du champ
4. Utilisation du client de type sécurisé
Les API GraphQL sont disponibles pour effectuer des opérations CRUD sur votre base de données. Rayfin SDK fournit une opération de client de données prête à l’emploi pour lire ou écrire ou supprimer des données.
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();
Référence de décorateur
Le Kit de développement logiciel (SDK) Rayfin fournit des décorateurs pour les modèles courants de modélisation des données :
Décorateurs d’entités
| Décorateur | Purpose | Example |
|---|---|---|
@entity() |
Marquer une classe en tant qu’entité de base de données | @entity() class Product |
Décorateurs de propriétés
| Décorateur | Type de base de données | type TypeScript |
|---|---|---|
@uuid() |
UNIQUEIDENTIFIER | string |
@text() |
NVARCHAR | string |
@int() |
INT | number |
@decimal() |
DÉCIMAL | number |
@bool() |
BIT | boolean |
@date() |
DATETIME2 | Date |
Décorateurs d’autorisation
| Décorateur | Purpose |
|---|---|
@role() |
Définir des autorisations basées sur des rôles |
Consultez Définir des autorisations de données pour plus de détails sur l’autorisation.
Flux de travail de développement
Un cycle de développement classique suit ce modèle :
- Définir ou modifier des modèles de données - Ajouter ou mettre à jour des classes TypeScript avec des décorateurs
-
Test localement avec le back-end distant - Exécutez
npm run devpour tester les modifications de code front-end sur votre serveur principal d’application dans Fabric. -
Deploy to Fabric - Exécutez
npx rayfin uppour déployer sur le service Fabric géré et appliquer vos modifications de schéma.
Les modifications apportées à vos modèles TypeScript se propagent automatiquement dans l’ensemble de la pile , du schéma de base de données aux points de terminaison d’API aux types clients.
Authorization
Les autorisations sont définies en parallèle de vos modèles de données à l’aide du décorateur @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;
}
Cette approche garantit les points suivants :
- Les règles de sécurité vivent en regard des données qu’elles protègent
- Les expressions de stratégie à typage sûr détectent les erreurs à la compilation
- La refactorisation des champs d’entité met automatiquement à jour les vérifications d’autorisation