Skip to content

Commit

Permalink
Tokens -> Token (#1469)
Browse files Browse the repository at this point in the history
  • Loading branch information
alxndr-w authored Jan 8, 2024
1 parent 2d051c6 commit 0c2c322
Show file tree
Hide file tree
Showing 5 changed files with 35 additions and 30 deletions.
37 changes: 21 additions & 16 deletions docs/05_rest.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,21 +10,20 @@ Die Klasse muss zunächst registriert werden siehe [YOrm](yorm.md), damit auf di

> Hinweis: Die Tabellem müssen mit YForm verwaltbar sein, da diese Felder automatisch genutzt werden.
Die Schnittstelle orientiert sich an https://jsonapi.org/format/. Aufrufe und JSON Formate sind ähnlich bis exakt so aufgebaut.
Die Schnittstelle orientiert sich an <https://jsonapi.org/format/>. Aufrufe und JSON Formate sind ähnlich bis exakt so aufgebaut.

[Im Rahmen einer REDAXOHour ist eine Video Einführung entstanden, die viele Punkte dieses Kapitels erklärt.](https://www.youtube.com/watch?v=o88DHxsOLOs)

## Konfiguration / Endpoints

Die Zugriff über REST muss für jeden Endpoint einzeln definiert werden. D.h. man muss für jede Tabelle und für unterschiedliche Nutzungszenarien diese fest definieren.

Die Standardroute der REST-API ist auf "/rest" gesetzt, d.h. hierunter können eigene Routen definiert werden.
Die Standardroute der REST-API ist auf "/rest" gesetzt, d.h. hierunter können eigene Routen definiert werden.

Die Konfiguration wird über PHP festgelegt und sollte im project-AddOn in der boot.php abgelegt werden. Kann aber auch an andere Stelle abgelegt werden, solange diese während der Initialisierung aufgerufen wird.

Hier ein Beispiel, um YCom-User über die REST-API zu verwalten:


```php
<?php

Expand Down Expand Up @@ -77,11 +76,9 @@ $route = new \rex_yform_rest_route(
\rex_yform_rest::addRoute($route);
```

Dieses Beispiel führt dazu, dass man User über das PlugIn auslesen kann, wie auch User einspielen kann, aber nur mit den Feldern: login,email,ycom_groups.
Dieses Beispiel führt dazu, dass man User über das PlugIn auslesen kann, wie auch User einspielen kann, aber nur mit den Feldern: login,email,ycom_groups.
Löschen kann man jeden User. Über Filter bei id oder login, lassen sich bestimmte User filtern und als Ganzes löschen.



### Route-Konfiguration

`path`
Expand All @@ -98,7 +95,6 @@ Beispiele

Wenn man keine Authentifizierung einträgt kann jeder diese Daten entsprechend der weiteren Konfiguration nutzen. Sollte man nur bei Tabellen wie PLZ oder ähnlich offensichtlich freien Daten machen.


`table`
Hier wird die entsprechend Tabelle übergeben, die in YOrm definiert ist.

Expand All @@ -108,8 +104,8 @@ Beispiel

## Nutzung eines Endpoints

URL (z. B. https://domain/rest/v1/user)
In den Beispielen wird davon ausgegangen, dass es keine eigene Authentifizierung gibt. Um zu sehen wie die Aufrufe funktionieren bitte hier https://jsonapi.org/format/ nachschlagen.
URL (z. B. <https://domain/rest/v1/user>)
In den Beispielen wird davon ausgegangen, dass es keine eigene Authentifizierung gibt. Um zu sehen wie die Aufrufe funktionieren bitte hier <https://jsonapi.org/format/> nachschlagen.

### GET

Expand All @@ -120,12 +116,14 @@ RequestType: ````GET````
URL: ```https://url.localhost/rest/v1/users/[id]```

Header:

```
Content-Type: application/x-www-form-urlencoded
token: [token]
```

Response:

```
{
"id": "[id]",
Expand All @@ -148,7 +146,6 @@ Response:
}
```


#### Filter

Man kann das Ergebnis filtern. Über URL Parameter können die internen Feldsuchen verwendet werden (getSearchFilter). Über einen oder mehrere ```filter[feldname]=suchwert``` Parameter werden die Suchfilter verwendet. Ein Suchfeld kann nur verwendet werden, wenn es in der Route als Feld definiert wurde.
Expand All @@ -171,13 +168,15 @@ RequestType: ````POST````

URL: ```https://url.localhost/rest/v1/users/```

Header:
Header:

```
Content-Type: application/x-www-form-urlencoded
token: [token]
```

Body:
Body:

```
{
"data": {
Expand Down Expand Up @@ -211,12 +210,14 @@ RequestType: ````DELETE````
URL: ```https://url.localhost/rest/v1/users/?filter[login]=jannie```

Header:

```
Content-Type: application/x-www-form-urlencoded
token: [token]
```

Response:

```
{
"all": 1,
Expand All @@ -238,12 +239,14 @@ URL: ```https://url.localhost/rest/v1/users/[id]```
oder ```https://url.localhost/rest/v1/users/?filter[id]=[id]```

Header:

```
Content-Type: application/x-www-form-urlencoded
token: [token]
```

Response:

```
{
"all": 1,
Expand All @@ -256,22 +259,24 @@ Response:
```

Response ohne Treffer:

```
{
"all": 0,
"deleted": 0,
"failed": 0
}
```

## Authentifizierung

### Standardauthentifizierung

Wenn im Model folgende Authentifizerung angegeben wurde: `'\rex_yform_rest_auth_token::checkToken()'` ist das die Standardauthentifizierung mit Tokens aus der YForm:Rest:Tokenverwaltung.
Wenn im Model folgende Authentifizerung angegeben wurde: `'\rex_yform_rest_auth_token::checkToken()'` ist das die Standardauthentifizierung mit Token aus der YForm:Rest:Tokenverwaltung.

Die hier erstellen Token werden entsprechend überprüft und müssen im Header übergeben werden. `token=###meintoken###` Nur aktive Tokens funktionieren.
Über das REST PlugIn kann man im Backend diese Zugriffe einschränken und tracken. D.h. Es können Einschränkungen wir Zugriffe / Stunde oder ähnliches eingestellt werden.
Jeder Zugriff auf die REST-API wird erfasst.
Die hier erstellen Token werden entsprechend überprüft und müssen im Header übergeben werden. `token=###meintoken###` Nur aktive Token funktionieren.
Über das REST PlugIn kann man im Backend diese Zugriffe einschränken und tracken. D.h. Es können Einschränkungen wir Zugriffe / Stunde oder ähnliches eingestellt werden.
Jeder Zugriff auf die REST-API wird erfasst.

## Header

Expand Down
8 changes: 4 additions & 4 deletions plugins/rest/lang/de_de.lang
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
yform_rest = REST-API

yform_rest_token = Tokens
yform_rest_token = Token

yform_rest_token_header = REST: Tokens
yform_rest_token_header = REST: Token

yform_rest_token_name = Name
yform_rest_token_token = Token
Expand All @@ -22,8 +22,8 @@ yform_rest_token_added = Token wurde hinzugefügt
yform_rest_token_header_summary

yform_rest_token_header_description
yform_rest_token_not_found = Keine Tokens gefunden
yform_rest_token_caption = Liste der Tokens
yform_rest_token_not_found = Keine Token gefunden
yform_rest_token_caption = Liste der Token

yform_rest_token_name_validate = Bitte eine Bezeichnung/Name eingeben
yform_rest_token_token_validate = Bitte einen Token eintragen
Expand Down
8 changes: 4 additions & 4 deletions plugins/rest/lang/en_gb.lang
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
yform_rest = REST-API

yform_rest_token = Tokens
yform_rest_token = Token

yform_rest_token_header = REST: Tokens
yform_rest_token_header = REST: Token

yform_rest_token_name = Name
yform_rest_token_token = Token
Expand All @@ -22,8 +22,8 @@ yform_rest_token_added = Token added
yform_rest_token_header_summary

yform_rest_token_header_description
yform_rest_token_not_found = No tokens found
yform_rest_token_caption = List of tokens
yform_rest_token_not_found = No token found
yform_rest_token_caption = List of token

yform_rest_token_name_validate = Please enter a description/name
yform_rest_token_token_validate = Please create a token
Expand Down
4 changes: 2 additions & 2 deletions plugins/rest/lang/es_es.lang
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
yform_rest = REST-API

yform_rest_token = Tokens
yform_rest_token = Token

yform_rest_token_header = REST: Tokens
yform_rest_token_header = REST: Token

yform_rest_token_name = Nombre
yform_rest_token_token = Token
Expand Down
8 changes: 4 additions & 4 deletions plugins/rest/lang/sv_se.lang
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
yform_rest = REST-API

yform_rest_token = Tokens
yform_rest_token = Token

yform_rest_token_header = REST: Tokens
yform_rest_token_header = REST: Token

yform_rest_token_name = Namn
yform_rest_token_token = Token
Expand All @@ -22,8 +22,8 @@ yform_rest_token_added = Token skapades
yform_rest_token_header_summary

yform_rest_token_header_description
yform_rest_token_not_found = Kunde inte hitta några tokens
yform_rest_token_caption = List av alla tokens
yform_rest_token_not_found = Kunde inte hitta några token
yform_rest_token_caption = List av alla token

yform_rest_token_name_validate = Vänligen ange en beteckning/ett namn
yform_rest_token_token_validate = Vänligen skapa en token
Expand Down

0 comments on commit 0c2c322

Please sign in to comment.