POS Entegrasyonu

Python Örneği

Type hints ile Python kullanan POS servisi referans uygulaması.

Bu, Saha POS Arayüzü (SPI) ile entegre olan bir POS servisinin referans uygulamasıdır. Type hints ile Python kullanarak gerekli uç noktaların nasıl uygulanacağını göstermektedir.

Kaynak Kod

Tam kaynak kodu GitHub'da görüntüleyin.

Gereksinimler

  • Python 3.10+ (modern type hints ve standart kütüphane kullanır)

Kurulum

Harici bağımlılık gerekmez! Bu örnek sadece Python'un standart kütüphanesini kullanır.

Servisi Çalıştırma

Örnek dizinine gidin

cd examples/python

Servisi çalıştırın

python3 server.py

Veya çalıştırılabilir yapın:

chmod +x server.py
./server.py

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 sabit kodlanmış bir token kullanır ancak gösterim amaçlı herhangi bir değeri kabul eder (eksikse bir uyarı loglar).

Örnek İstekler

Ürünleri Al

curl -H "Authorization: Bearer secret" http://localhost:5000/products

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-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
Framework-lessPython'un native http.server modülünü kullanır (Flask veya başka framework yok)
Type HintsTüm API modelleri için TypedDict ile tam tip desteği
Sadece Standart KütüphaneHarici bağımlılık gerekmez
In-Memory StoreSipariş verilerini saklamak için dict kullanır (yeniden başlatmada sıfırlanır)
JSON LoggingKolay ayrıştırma için yapılandırılmış loglama
Graceful ShutdownTemiz kapatma için KeyboardInterrupt (Ctrl+C) işler

Proje Yapısı

server.py      # İstek işleyicileriyle ana sunucu uygulaması
models.py      # TypedDict kullanan tip tanımları
database.py    # In-memory veri deposu

Python Sürümü

Python 3.10+ gerektirir:

  • Modern type hints (list[T], dict[K, V])
  • | operatörüyle Union types
  • TypedDict iyileştirmeleri