Bu belge, akinsoft-api projesinin kod yapısını ve kullanımını sıfırdan bilen biri için açıklamaktadır.
Bu proje, Akınsoft Wolvox muhasebe programının veritabanına erişerek bazı stok ve fiyat bilgilerini RESTful API'ler aracılığıyla dış dünyaya sunmayı amaçlamaktadır.
Kullanılan Teknolojiler:
- Dil: Java
- API Framework'ü: SparkJava (Hafif bir web framework'ü)
- Veritabanı: Firebird (Canlı bağlantı) ve SQLite (Testler için)
- Bağımlılık Yönetimi: Maven
- Test Framework'ü: JUnit
akinsoft-api/
├── pom.xml # Maven yapılandırma dosyası
├── src/
│ ├── main/java/
│ │ ├── App.java # Uygulama başlangıç noktası (main metodu)
│ │ ├── API/ # API endpoint'lerini tanımlayan sınıflar
│ │ │ ├── GetItem.java
│ │ │ ├── GetItemWithPrice.java
│ │ │ ├── GetPrice.java
│ │ │ ├── GetStockTransactions.java
│ │ │ └── PostStockTransaction.java
│ │ └── Utils/ # Yardımcı sınıflar
│ │ └── Connector.java # Veritabanı bağlantısı
│ └── test/java/ # Birim testleri
│ ├── TestAPI.java # API'lerin test senaryoları
│ ├── TestConnector.java # Veritabanı bağlantısının testi
│ └── TestUtils.java # Testlerde kullanılan yardımcı metodlar
│ └── test/resources/ # Test verileri ve mock veritabanı
└── README.md # Proje açıklaması (şu anda boş)- Java 17 JDK (Proje bu versiyon için yapılandırılmış)
- Apache Maven (Bağımlılık yönetimi ve build işlemleri için)
- Git (Kaynak kodu almak için)
-
Kaynak Kodunu Alın: Proje dizinine gidin veya yeni bir klasör oluşturun ve aşağıdaki komutu çalıştırın:
git clone <proje-git-url> cd akinsoft-api
-
Bağımlılıkları Yükleyin: Maven,
pom.xmldosyasındaki bağımlılıkları otomatik olarak çözer. Aşağıdaki komutu çalıştırarak projeyi derleyin ve bağımlılıkları indirin:mvn clean install
Bu komut, tüm testlerin çalışmasını da tetikleyecektir. Testlerin geçmesi, temel işlevlerin doğru çalıştığını gösterir.
-
Uygulamayı Çalıştırın: Uygulama, WAR dosyası olarak paketlenmiştir. Geliştirme sırasında doğrudan
App.javasınıfınınmainmetodunu çalıştırarak test edebilirsiniz.IDE'niz (Eclipse, IntelliJ IDEA, VS Code) varsa,
App.javadosyasını açın ve 'Run' (Çalıştır) seçeneğini kullanın.Alternatif olarak, Maven ile çalıştırmak için:
mvn exec:java -Dexec.mainClass="App"Uygulama başlatıldığında, SparkJava sunucusu çalışmaya başlayacak ve API'ler hazır hale gelecektir.
Veritabanı bağlantısı Utils/Connector.java dosyasında yapılandırılmıştır.
-
Canlı Ortam:
createFirebirdStatementmetodundajdbc:firebirdsql://...satırı aktif edilmeli.host,user,passworddeğişkenleri, hedef Firebird veritabanınızın bilgileriyle güncellenmelidir.
-
Test Ortamı:
- Varsayılan olarak, testler için SQLite veritabanı (
mock.db) kullanılmaktadır. Bu,Connector.javadosyasında yorum satırına alınmış olan Firebird bağlantısının yerinejdbc:sqlite:...bağlantısının kullanılmasıyla sağlanır.
- Varsayılan olarak, testler için SQLite veritabanı (
API'ler, App.java dosyasının main metodunda tanımlanır ve başlatılır. Her API sınıfı (GetItem, GetPrice, vb.) kendi endpoint'ini ve işlevselliğini tanımlar.
Sunucu çalışmaya başladıktan sonra, aşağıdaki endpoint'lere istek atabilirsiniz. Bu örnekler GetStockTransactions ve PostStockTransaction sınıflarında tanımlanmıştır. Diğer sınıflar için benzer desenler izlenir.
-
GET /stocktransactions
- Açıklama: Belirli bir tarih aralığındaki stok hareketlerini getirir.
- Parametreler:
datestart: Başlangıç tarihi (YYYY-MM-DD formatında)dateend: Bitiş tarihi (YYYY-MM-DD formatında)
- Örnek:
http://localhost:4567/stocktransactions?datestart=2022-01-01&dateend=2022-12-31
-
POST /stocktransaction
- Açıklama: Yeni bir stok hareketi kaydeder.
- Parametreler:
round: İşlem turu (genellikle 0 veya 1)
- Gövde (Body): JSON formatında stok hareketi verileri. Örnek format
src/test/resources/TestPostStockTransactionRequest.jsondosyasında bulunabilir.
Diğer endpoint'ler için sınıfların handle metodlarını inceleyebilirsiniz.
Proje, src/test/java dizininde birim testleri içerir. TestAPI.java dosyası, her bir API'nin doğru çalışıp çalışmadığını kontrol eder. Testler, verileri gerçek veritabanından değil, src/test/resources/mock.db adlı SQLite mock veritabanından alır.
Testleri çalıştırmak için:
mvn testkomutunu kullanabilirsiniz.
Yeni bir API endpoint'i eklemek istiyorsanız:
src/main/java/APIdizininde yeni bir Java sınıfı oluşturun.- Gerekli veritabanı sorgularını ve JSON dönüşümünü bu sınıfta tanımlayın. Ortak davranışlar için mevcut sınıflardan (örneğin
GetItem) miras alabilir veya yeni bir interface tanımlayabilirsiniz. App.javadosyasınınmainmetodunda, yeni oluşturduğunuz sınıfın bir örneğini alın vehandlemetodunu çağırın.
- Proje artık SparkJava tarafından servis edilen basit bir HTML arayüzü ile gelir. Statik dosyalar
src/main/resources/public/dizininde tutulur. - Backend'i başlattıktan sonra (
mvn exec:java -Dexec.mainClass=App), tarayıcıdanhttp://localhost:4567/adresine giderek arayüze ulaşabilirsiniz. - Item Lookup: Barkod veya stok kodu girerek ürünleri ve isterseniz satış fiyatlarını görüntüler.
- Price Book: Satış ve alış fiyatlarını ayrıştırılmış olarak listeler.
- Stock Transactions: Tarih aralığı seçerek stok hareketlerini tablodan takip edebilirsiniz.
- Record Stock Transaction: Çok satırlı formla stok hareketi ekleyebilir,
roundparametresi ile alış/satış tipini belirleyebilirsiniz. - Arayüzdeki üst kısımdan API temel adresini değiştirebilir, farklı ortamlar için kayıtlı URL'yi tarayıcı depolamasında saklayabilirsiniz.