POS Entegrasyonu

.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/products

Sayfalama 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/locations

Uygulama Detayları

ÖzellikAçıklama
.NET 9Minimal API'ler dahil en son .NET özelliklerini kullanır
Native AOT HazırPublishAot ile ahead-of-time derleme desteği için yapılandırılmış
Slim BuilderMinimal footprint için WebApplication.CreateSlimBuilder kullanır
RecordsDeğişmez veri modelleri için modern C# records
snake_case JSONAPI tutarlılığı için otomatik snake_case dönüşümü
In-Memory StoreThread-safe sipariş depolama için ConcurrentDictionary kullanır
Type SafetyNullable reference types etkinleştirilmiş kapsamlı tip tanımları
Enum SerializationSipariş 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:

  • acceptedin_progress (5 saniye sonra)
  • in_progressready (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 run

Koddaki 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.