.NET Örneği
Minimal API'ler ve Native AOT desteği ile .NET 9 kullanan POS servisi referans uygulaması.
Bu, Saha POS Arayüzü (SPI) ile entegre olan bir POS servisinin referans uygulamasıdır. Minimal API'ler ve Native AOT desteği ile .NET 9 kullanarak gerekli uç noktaların nasıl uygulanacağını göstermektedir.
Kaynak Kod
Tam kaynak kodu GitHub'da görüntüleyin.
Gereksinimler
- .NET 9 SDK veya üstü
Servisi Çalıştırma
Servis 5000 portunda başlayacaktır.
Servisi Test Etme
Uç noktaları curl veya sağlanan Postman koleksiyonu kullanarak test edebilirsiniz.
Kimlik Doğrulama
Servis bir Authorization başlığı bekler. Örnek, eksikse bir uyarı loglar ancak gösterim amaçlı herhangi bir değeri kabul eder.
Örnek İstekler
Ürünleri Al
curl -H "Authorization: Bearer secret" http://localhost:5000/productsSayfalama ile Ürünleri Al
curl -H "Authorization: Bearer secret" "http://localhost:5000/products?cursor=10"Sipariş Oluştur
curl -X POST http://localhost:5000/orders \
-H "Authorization: Bearer secret" \
-H "Content-Type: application/json" \
-d '{
"items": [
{
"product_id": "prod-1",
"quantity": 1,
"note": "No onions",
"options": [
{"name": "opt-doneness", "values": ["medium"]},
{"name": "opt-extras", "values": ["extra-cheese"]}
]
}
],
"location": "loc-table-1",
"note": "Allergy: Peanuts",
"number_of_people": 2
}'Sipariş Durumunu Al
{order_id} yerine sipariş oluşturma yanıtından dönen ID'yi yazın.
curl -H "Authorization: Bearer secret" http://localhost:5000/orders/{order_id}Siparişi İptal Et
curl -X POST http://localhost:5000/orders/{order_id}/cancel \
-H "Authorization: Bearer secret" \
-H "Content-Type: application/json" \
-d '{"reason": "Customer changed mind"}'Konumları Al
curl -H "Authorization: Bearer secret" http://localhost:5000/locationsUygulama Detayları
| Özellik | Açıklama |
|---|---|
| .NET 9 | Minimal API'ler dahil en son .NET özelliklerini kullanır |
| Native AOT Hazır | PublishAot ile ahead-of-time derleme desteği için yapılandırılmış |
| Slim Builder | Minimal footprint için WebApplication.CreateSlimBuilder kullanır |
| Records | Değişmez veri modelleri için modern C# records |
| snake_case JSON | API tutarlılığı için otomatik snake_case dönüşümü |
| In-Memory Store | Thread-safe sipariş depolama için ConcurrentDictionary kullanır |
| Type Safety | Nullable reference types etkinleştirilmiş kapsamlı tip tanımları |
| Enum Serialization | Sipariş durumları için otomatik string dönüşümü |
Proje Yapısı
Program.cs # API uç noktalarıyla ana uygulama
Models.cs # Veri modelleri ve DTO'lar
Database.cs # In-memory veri deposu
SahaSpiExample.csproj # Proje yapılandırmasıTemel Özellikler
Modern .NET 9 Özellikleri
- Minimal APIs: Temiz, fonksiyonel uç nokta tanımları
- Record Types: Değer eşitliği ile değişmez veri yapıları
- Init-only Properties: Değişmez nesne başlatma
- Nullable Reference Types: Derleme zamanı null güvenliği
- Top-level Statements: Boilerplate class/method sarmalayıcıları yok
Sipariş Durumu Simülasyonu
Siparişler otomatik olarak durumlar arasında ilerler:
accepted→in_progress(5 saniye sonra)in_progress→ready(toplam 15 saniye sonra)
Çoklu Dil Desteği
Çevrilebilir alanlar için her iki yaklaşımı da gösterir:
- Basit stringler:
"Name": "Cola" - Dil map'leri:
"Name": {"en": "Classic Burger", "tr": "Klasik Burger"}
Geliştirme Notları
Hot Reload
Servis geliştirme sırasında .NET hot reload'u destekler:
dotnet watch runKoddaki değişiklikler sunucuyu yeniden başlatmadan otomatik olarak yeniden yüklenir.
Debugging
Tam debugging desteği için Visual Studio 2022, C# Dev Kit ile Visual Studio Code veya JetBrains Rider'da açın.