SAFweb2-Release 2.1.17

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'