-
Notifications
You must be signed in to change notification settings - Fork 0
Guide APIs
GitHub Actions edited this page Jan 25, 2026
·
2 revisions
Lerne, wie du REST APIs mit VelinScript entwickelst.
@GET("/api/hello")
fn hello(): string {
return "Hello, VelinScript!";
}
Dies wird zu einem Rust actix-web Endpoint kompiliert.
@POST("/api/users")
fn createUser(name: string, email: string): User {
let user = User {
id: generateId(),
name: name,
email: email,
};
return db.save(user);
}
@GET("/api/users/:id")
fn getUser(id: string): User {
return db.find(User, id);
}
Der :id Parameter wird automatisch als Funktionsparameter übergeben.
@POST("/api/users")
fn createUser(name: string, email: string): User {
let user = User {
id: generateId(),
name: name,
email: email,
};
return db.save(user);
}
@GET("/api/users/:id")
fn getUser(id: string): User {
return db.find(User, id);
}
@GET("/api/users")
fn getUsers(): List<User> {
return db.findAll(User);
}
@PUT("/api/users/:id")
fn updateUser(id: string, name: string, email: string): User {
let user = db.find(User, id);
user.name = name;
user.email = email;
return db.save(user);
}
@DELETE("/api/users/:id")
fn deleteUser(id: string): void {
db.delete(User, id);
}
struct User {
id: string,
name: string,
email: string,
}
@GET("/api/users")
fn getUsers(): List<User> {
return db.findAll(User);
}
@GET("/api/users/:id")
fn getUser(id: string): User {
return db.find(User, id);
}
@POST("/api/users")
fn createUser(name: string, email: string): User {
let user = User {
id: generateId(),
name: name,
email: email,
};
return db.save(user);
}
@PUT("/api/users/:id")
fn updateUser(id: string, name: string, email: string): User {
let user = db.find(User, id);
user.name = name;
user.email = email;
return db.save(user);
}
@DELETE("/api/users/:id")
fn deleteUser(id: string): void {
db.delete(User, id);
}
Eine kleine realistische API, die ein Krypto-Portfolio berechnet:
struct PortfolioRequest {
btcAmount: number,
ethAmount: number,
solAmount: number,
}
struct PortfolioOverview {
btcAmount: number,
btcValueUsd: number,
ethAmount: number,
ethValueUsd: number,
solAmount: number,
solValueUsd: number,
totalValueUsd: number,
}
@POST("/api/crypto/portfolio/custom")
fn calculateCustomPortfolio(request: PortfolioRequest): PortfolioOverview {
let btc = getStaticBitcoinPrice();
let eth = getStaticEthereumPrice();
let sol = getStaticSolanaPrice();
let btcValue = btc.priceUsd * request.btcAmount;
let ethValue = eth.priceUsd * request.ethAmount;
let solValue = sol.priceUsd * request.solAmount;
let total = btcValue + ethValue + solValue;
return PortfolioOverview {
btcAmount: request.btcAmount,
btcValueUsd: btcValue,
ethAmount: request.ethAmount,
ethValueUsd: ethValue,
solAmount: request.solAmount,
solValueUsd: solValue,
totalValueUsd: total,
};
}
Beispiel-Request:
POST /api/crypto/portfolio/custom
Content-Type: application/json
{
"btcAmount": 0.25,
"ethAmount": 2.0,
"solAmount": 15.0
}Die Antwort enthält die berechneten USD-Werte je Coin und die Gesamtsumme.
- Tutorial 3: Security - Security Features
- Tutorial 4: Database - Database Integration
- Compiler Architecture
- Pass-Verlauf
- Type Inference
- Code Ordering
- IR Representation
- Borrow Checker
- Code Generation
- Multi-Target Compilation
- Module Resolution
- Framework Integration
- Parallelization
- AI Compiler Passes
- Prompt Optimizer
- System Generation
- Basics
- APIs
- Security
- Database
- Validation
- Authentication
- ML/LLM
- Intelligence Features
- Type Inference
- ML Training
- Pattern Matching
- Closures
- Collections
- HTTP Client
- String Interpolation
- Debugger
- Vektor-Datenbanken
- CLI Reference
- API Keys Setup
- Advanced
- Backend
- Security Best Practices
- AI/ML
- Auto Imports
- Plugin Development