Request
Request-URI
Die URL zur API ist http(s)://host:port/api/sivas/v1/ gefolgt von der geforderten Funktion.
Folgende Routen sind derzeit definiert
| Method | Route | Action |
|---|---|---|
| GET, HEAD | / | |
| GET, HEAD | api | |
| GET | up | |
| GET, HEAD | api/user | |
| GET, POST | api/sivas/v1/dbadmin/tables | App\Services\OraDbAdmin@userTables |
| GET | storage/{path} | storage.local |
| GET, POST | api/sivas/v1/sql/exec | Api\Sivas\V1\SqlSupportController@sqlexec |
| GET, HEAD | api/sivas/v1/vk/rgjournal | Api\Sivas\V1\VkController@rgjournal |
| POST | api/sivas/v1/vk/rgjournal | Api\Sivas\V1\VkController@rgjournal |
| GET | api/sivas/v1/ek/supplier-openorders | Api\Sivas\V1\EkController@supplier_openorders |
| GET | api/sivas/v1/vk/customer_orders | Api\Sivas\V1\VkController@customer_orders |
| GET | api/sivas/v1/vk/customer_orders_pg | Api\Sivas\V1\VkController@customer_orders_pg |
Request-Parameter
Die Requestparameter werden in verschiedene Gruppen unterteilt.
- Filter
- Options
- Columns
- order
Filter
Zum Filter gehören alle Feldname, die NICHT
- _token
- _method
- columns
- order
heissen. Die Feldname sind sind im Namen codiert. Der Type ist obligatorisch, Range optional.
Folgende Typen werden unterstützt:
| Typ | Bedeutung |
|---|---|
| date | Datum im Format d.m.Y |
| number | integer, float |
| string | Zeichenkette |
| slist | Listen mit Zeichenketten. Formate: ‘a,b,c,d’, ‘a;b;c;d’, [‘a’, ‘b’, …] |
| !slist | NOT IN |
| nlist | Listen mit Ziffern. Formate: ‘1,2,3,4’, ‘1;2;3;4’, [1, 2, …] |
| !nlist | NOT IN |
Request Daten:
typ--name--range[from|to]
Beispiel:
date--re-datum--from // Type: date; Name: re-datum (wird zu re_datum) ; Range: from
date--re-datum--to // Type: date; Name: re-datum (wird zu re_datum) ; Range: to
number--kdnr // Type: number; Name: kdnr
Zusatzfilter im Code
// additional Filter
$parameter['filter']['r.status'] = [
'type' => 'number',
'value' => 8110,
];
$parameter['filter']['r.rechnung_art'] = [
'type' => 'slist',
'value' => 'PG, PB',
];
Columns
Hier kann eine Liste von Spalten angegeben werden, die in die Datenbankabfrage integriert werden soll. Das kann besonders für Listen ein gute Hilfe sein, da hier bestimmt werden kann, welche Spalten dargestellt werden können.
columns => 'col1,col2, ... ,colx'
Qualifizierung, Alias Mapping
Wird eine Abfrage per implizieten INNER JOIN (table1 t, table2 u) erzeugt, kann mit einer filterAlias Liste
ein Mapping von qualifierten Spaltenname (t.name) auf einfache Namen erfolgen:
$filterAlias = [
'renr' => 'r.renr',
'kdnr' => 'r.kdnr',
'rname1' => 'r.rname1',
're_datum' => 'r.re_datum',
];
$parameter = $this->sanitize($request, false, $filterAlias);
Zusatzcolumns
Zusatzcolumns im Code
Sollen Zahlen ausgegeben werden, die in einem weiter zu verarbeitenden Format geliefert werdfen sollen,
dann ist die Funktion oraNumberformat zu verwenden.
Diese sorgt innerhalb der Oracle-Abfrage um die richtige Konvertierung:
TRIM(TO_CHAR(".$fieldname.", '999999D99', 'NLS_NUMERIC_CHARACTERS = ''.,'''))
$parameter['columns'][] = 'r.re_datum'; // mehrere Tabellen: Qualifizierung
$parameter['columns'][] = 'min(r.rname1) as rname1'; // bei Groupanweisungen
$parameter['columns'][] = $this->oraNumberformat('min(r.steuer_satz)'). ' as steuer_satz';
$parameter['columns'][] = $this->oraNumberformat('min(r.steuer_betrag)'). ' as steuer_betrag';
Order
Die Liste der Spalten, nach denen das SQL-Ergebnis sortiert werden soll. Es werden beide Sortierrichtungen akzeptiert.
order => 'col1-asc, col2-desc, ... ,colx-asc'
Zusatzorder im Code
// default Order
if (empty($parameter['order'])) {
$parameter['order'] = 'r.renr';
}
Options
Die Optionen sind im Feldnamen codiert. In der Regel werden Optionen als Auswahl aus mehreren Werten angeboten. Falls das so ist, muss am Ende des Namens ein ‘[]’ angefügt werden.
option--name[] => 'Wert'
Beispiel
option--rechnung-art[] = 'RG'
option--rechnung-art[] = 'SR'