Zeus-Commons-APIs: Ihr Werkzeug für spezialisierte Backend-Aufgaben
Einleitung
Backend-Entwicklung ist ein Feld mit vielen Herausforderungen, sei es komplexe SQL-Abfragen, Datenintegration oder die Modernisierung von Legacy-Systemen. Zeus-Commons-APIs möchte diese Herausforderungen einfacher gestalten. In diesem Blogartikel gehen wir darauf ein, wie dieses spezialisierte Tool Ihnen dabei helfen kann.
Was ist Zeus-Commons-APIs?
Zeus-Commons-APIs bietet eine zielgerichtete Lösung für Ihre Backend-Services. Es erlaubt die Erstellung von bis zu vierfach verschachtelten SQL-Abfragen, einfach über REST oder Konsole. Die Anwendung ist schlank, läuft auf Spark Java und gibt Daten in JSON- oder XML-Formaten zurück, mit Verschachtelung bis zu vier Ebenen.
Wichtiger Hinweis: Für den Produktiveinsatz sind zusätzliche Maßnahmen gegen SQL-Injection erforderlich.
Mögliche Anwendungsfälle
- API-Backend-Entwicklung: Perfekt für die Entwicklung von APIs, die komplexe Datenmodelle unterstützen müssen.
- Integration verschiedener Datenquellen: Ideal, wenn Sie Daten aus unterschiedlichen Quellen in einem Format konsolidieren möchten.
- Modernisierung von Legacy-Systemen: Etwa für die Aktualisierung eines altgedienten System-i (AS/400).
Wie es funktioniert
Endpunkte und Metadaten
Das Tool verfügt über zwei Hauptendpunkte:
GET localhost:4567/json
: Datenrückgabe im JSON-Format.GET localhost:4567/xml
: Datenrückgabe im XML-Format.
Die Ausgabe von Metadaten kann ein- oder ausgeschaltet werden, indem das Feld includeMetadata
im JSON-Body auf true
oder false
gesetzt wird.
Bauen der Anwendung als „Fat“-Jar
mvn clean package
Starten der Anwendung als REST-Service
java -cp zeus-commons-0.0.1-SNAPSHOT.jar de.zeus.commons.provider.Provider "REST" "config/jdbc.properties" "config/spark.properties"
Im Modis „REST“ wartet die Anwendung auf eingehende Requests auf dem konfigurierten Port.
Starten der Anwendung als CONSOLE-Anwendung
java -cp zeus-commons-0.0.1-SNAPSHOT.jar de.zeus.commons.provider.Provider "CONSOLE" "config/jdbc.properties" "[json-query-objects]" "[application/xml | application/json]"
Im Modus „CONSOLE“ muss das JSON-Query-Object direkt beim Aufruf mit angegeben werden, ebenso das gewünschte Ausgabeformt, application/xml oder application/json.
Datenabfrage und Datenverschachtelung
Ein starkes Feature ist die Unterstützung von Datenverschachtelungen bis zu vier Ebenen, die die Abbildung komplexer Abfragebeziehungen ermöglicht. Die Idee der verschachtelten Abfragen ist, mehrere Tabellen in einer logischen Reihenfolge zu durchsuchen, um komplexe Informationen einfach abzurufen.
Beispiel Request
"name": "agents",
"statement": "select * from agents where agent_code = 'A105'",
"subquery": {
"name": "orders",
"statement": "select * from orders where agent_code = '[$agent_code]'",
"subquery": {
"name": "customers",
"statement": "select * from customers where cust_code = '[$cust_code]'",
"subquery": {
"name": "revenue",
"statement": "select * from agent_revenue where agent_code = '[$agent_code]'"
}
}
}
},
"includeMetadata": false
}
Beispiel JSON Response (gekürzt und ohne Meta-Daten)
"agents": {
"A105": {
"agent_code": "A105",
"agent_name": "James Johnson",
"working_area": "London",
"more": "..."
}
},
"orders": {
"5": {
"ord_num": "5",
"ord_amount": "3000.00",
"advance_amount": "1300.00",
"more": "...",
"customers": {
"C105": {
"cust_code": "C105",
"cust_name": "Emily Smith",
"cust_city": "London",
"more": "...",
"revenue": {
"A105": {
"agent_code": "A105",
"agent_name": "James Johnson",
"cumulative_revenue": "7700.00",
"more": "..."
}
}
}
}
}
}
}
Beispiel XML Response (gekürzt und ohne Meta-Daten)
<result>
<contentData>
<agents>
<entity>
<agent_code>A105</agent_code>
<agent_name>James Johnson</agent_name>
<working_area>London</working_area>
<more>...</more>
<orders>
<entity>
<ord_num>5</ord_num>
<ord_amount>3000.00</ord_amount>
<advance_amount>1300.00</advance_amount>
<more>...</more>
<customers>
<entity>
<cust_code>C105</cust_code>
<cust_name>Emily Smith</cust_name>
<cust_city>London</cust_city>
<more>...</more>
<revenue>
<entity>
<agent_code>A105</agent_code>
<agent_name>James Johnson</agent_name>
<cumulative_revenue>7700.00</cumulative_revenue>
<more>...</more>
</entity>
</revenue>
</entity>
</customers>
</entity>
</orders>
</entity>
</agents>
</contentData>
</result>
GitHub-Repo
Code und Testdaten sind auf GitHub verfügbar.
Fazit
Zeus-Commons-APIs ist ein Tool mit klarem Fokus, das jedoch vielfältige Einsatzmöglichkeiten bietet. Es nimmt Ihnen spezielle Backend-Aufgaben der Datenextraktion und Konvertierung ab und lässt Ihnen Raum für Flexibilität, ohne unnötigen Overhead.
Lizenz
Das Projekt steht unter der Apache 2.0-Lizenz zur Verfügung.
← Eine Java-Anwendung auf IBM i (AS/400) deployen und starten