Σημείωμα
Η πρόσβαση σε αυτήν τη σελίδα απαιτεί εξουσιοδότηση. Μπορείτε να δοκιμάσετε να εισέλθετε ή να αλλάξετε καταλόγους.
Η πρόσβαση σε αυτήν τη σελίδα απαιτεί εξουσιοδότηση. Μπορείτε να δοκιμάσετε να αλλάξετε καταλόγους.
Το Rayfin SDK χρησιμοποιεί ένα μοντέλο προγραμματισμού που βασίζεται σε διακοσμητή, όπου ορίζετε το σχήμα δεδομένων σας μία φορά στο TypeScript και λαμβάνετε αυτόματα API έτοιμα για παραγωγή, πελάτες ασφαλείς για τύπο και υποδομή.
Βασικές έννοιες
Το Rayfin SDK συνδυάζει τρία βασικά στοιχεία:
- Σχήμα που βασίζεται σε διακοσμητή: Χρησιμοποιήστε διακοσμητές TypeScript για να ορίσετε μοντέλα δεδομένων, δικαιώματα και σχέσεις.
- Αυτόματη δημιουργία API: Οι διακοσμημένες τάξεις σας γίνονται τελικά σημεία GraphQL χωρίς να γράφετε κώδικα ελεγκτή.
- Υπολογιστές-πελάτες ασφαλείς τύπου: Οι πελάτες TypeScript που δημιουργούνται παρέχουν επικύρωση χρόνου μεταγλώττισης για ερωτήματα και μεταλλάξεις.
Πώς λειτουργεί
Όταν δημιουργείτε μια εφαρμογή Fabric, ο κώδικάς σας ρέει σε αυτά τα στάδια:
| # | Στάδιο | Τι συμβαίνει |
|---|---|---|
| 1 | Προγραμματιστής | Συντάσσετε την εφαρμογή στο πρόγραμμα επεξεργασίας της επιλογής σας. |
| 2 | TypeScript | Μπορείτε να γράψετε κλάσεις οντοτήτων σε TypeScript. |
| 3 | Διακοσμητές | Σχολιάζετε τάξεις και πεδία με @entity, @uuid, @text, @role, και άλλους διακοσμητές. |
| 4 | Schema | Το CLI μεταγλωττίζει τις διακοσμημένες κλάσεις σε σχήμα βάσης δεδομένων, πολιτικές αδειών και διαμόρφωση API. |
| 5 | API | Το σχήμα δημοσιεύεται ως τελικά σημεία GraphQL. |
| 6 | Πρόγραμμα-πελάτης | Το παραγόμενο RayfinClient εκθέτει ένα πρόγραμμα-πελάτη δεδομένων και ελέγχου ταυτότητας με ασφάλεια τύπου σε αυτά τα τελικά σημεία. |
| 7 | Εφαρμογή | Η εφαρμογή frontend σας καταναλώνει τον πελάτη για ανάγνωση και εγγραφή δεδομένων. |
1. Ορίστε μοντέλα δεδομένων με διακοσμητές
Ορίζετε τη δομή των δεδομένων σας χρησιμοποιώντας κλάσεις TypeScript και διακοσμητές από @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. Δημιουργία σχήματος
Το Rayfin CLI (npx rayfin) αναλύει τις διακοσμημένες τάξεις σας και δημιουργεί:
- Σχήμα βάσης δεδομένων - Πίνακες, στήλες, περιορισμοί και ευρετήρια
- Διαμόρφωση API - Ορισμοί τελικού σημείου GraphQL
- Πολιτικές δικαιωμάτων - Ασφάλεια σε επίπεδο γραμμών και έλεγχος πρόσβασης σε επίπεδο πεδίου
4. Ασφαλής χρήση υπολογιστή-πελάτη
Τα API GraphQL είναι διαθέσιμα για την εκτέλεση λειτουργιών CRUD στη βάση δεδομένων σας. Το Rayfin SDK παρέχει μια λειτουργία προγράμματος-πελάτη δεδομένων για ανάγνωση ή εγγραφή ή διαγραφή δεδομένων.
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();
Αναφορά διακοσμητή
Το Rayfin SDK παρέχει διακοσμητές για κοινά μοτίβα μοντελοποίησης δεδομένων:
Διακοσμητές οντοτήτων
| Διακοσμητής | Purpose | Παράδειγμα |
|---|---|---|
@entity() |
Σήμανση κλάσης ως οντότητας βάσης δεδομένων | @entity() class Product |
Διακοσμητές ακινήτων
| Διακοσμητής | Τύπος βάσης δεδομένων | Τύπος TypeScript |
|---|---|---|
@uuid() |
UNIQUEIDENTIFIER | string |
@text() |
NVARCHAR | string |
@int() |
ΙΝΤ | number |
@decimal() |
ΔΕΚΑΔΙΚΌΣ | number |
@bool() |
BIT | boolean |
@date() |
DATETIME2 | Date |
Διακοσμητές αδειών
| Διακοσμητής | Purpose |
|---|---|
@role() |
Ορισμός δικαιωμάτων βάσει ρόλων |
Δείτε την ενότητα Ορισμός δικαιωμάτων δεδομένων για λεπτομέρειες εξουσιοδότησης.
Ροή εργασιών ανάπτυξης
Ένας τυπικός κύκλος ανάπτυξης ακολουθεί αυτό το μοτίβο:
- Ορισμός ή τροποποίηση μοντέλων δεδομένων - Προσθήκη ή ενημέρωση κλάσεων TypeScript με διακοσμητές
-
Δοκιμή τοπικά με απομακρυσμένο backend - Εκτελέστε το
npm run devγια να δοκιμάσετε τις αλλαγές στον κώδικα του frontend σε σχέση με το backend της εφαρμογής σας στο Fabric. -
Ανάπτυξη σε Fabric - Εκτελέστε
npx rayfin upγια ανάπτυξη στη διαχειριζόμενη υπηρεσία Fabric και εφαρμόστε τις αλλαγές σχήματος.
Οι αλλαγές στα μοντέλα TypeScript διαδίδονται αυτόματα σε ολόκληρη τη στοίβα — από το σχήμα βάσης δεδομένων έως τα τελικά σημεία API έως τους τύπους πελατών.
Authorization
Τα δικαιώματα ορίζονται παράλληλα με τα μοντέλα δεδομένων σας χρησιμοποιώντας τον @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;
}
Η προσέγγιση αυτή διασφαλίζει:
- Οι κανόνες ασφαλείας ισχύουν δίπλα στα δεδομένα που προστατεύουν
- Οι εκφράσεις πολιτικής ασφαλούς τύπου εντοπίζουν σφάλματα κατά τη μεταγλώττιση
- Τα πεδία οντότητας ανακατασκευής ενημερώνουν αυτόματα τους ελέγχους δικαιωμάτων