Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Vereinfachung der Objekt API #4

Merged
merged 5 commits into from
Oct 12, 2018
Merged
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 29 additions & 14 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,46 +7,61 @@ wie man thesauruseintraege des berliner altaegyptischen woerterbuches abrufen un

- method: `GET`

Man gibt die **26**-stellige (:point_up:) ID des thesauruseintrags an und bekommt eine `application/json` response folgender art:
Man gibt die **26**-stellige (:point_up:) ID des thesauruseintrags an und bekommt eine
`application/json` response folgender art:

```json
{
"children": [],
"id": "CLJN6LLO5NDL7DY6HOP4XC4ELE",
"name": "Butler, Cuthbert",
"parents": [
"http://.../ths/get/OJDRAHAIX5BMND7OQH3TKTG4C4"
],
"type": "person"
}
```

### `/ths/get/<string:id>/<string:key>`
### `/ths/get/<string:id>/<string:relation>`

- method: `GET`

Man gibt zusaetzlich zur **26**-stelligen (:point_up:) ID noch den namen der eigenschaft an, die man haben will. Moeglich sind `name`, `type`, `roots`, `parents`, `children`. Bei einem der letzten drei erhaelt man eine JSON response mit einer liste (ein eintrag kann mehrere wurzelelemente haben) von objekten mit jeweils `id`, `type` und `name` der verwandten thesauruseintraege. Wenn man `name` oder `type` anfragt, bekommt man eine `text/plain` response wo nur der gewuenschte inhalt drin steht.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Bist Du sicher dasz aufloesen von IDs direkt nach name und type nicht praktisch waere? Das wird ja jedesmal passieren wenn die GUI eine ths-ID in irgendeinem feld darstellen soll.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

mein eindruck war, dass die ersten beiden endpunkte redundantes zurück liefern. also, ich kriege ne liste der kinder, inklusive type und name. im cache könnte das aber schon von einer abfrage des objekts her bekannt sein.

oder so: der zweite endpoint ist als vertiefende ergänzung des ersten zu verstehen. der use-case type von diesem endpunkt zu verarbeiten wäre ja wohl ein filtern. das ergänze ich mal als parameter.

Man gibt zusaetzlich zur **26**-stelligen (:point_up:) ID noch den namen der beziehung
an, deren objekte man haben will. Moeglich sind `roots`, `parents` und `children`. Man erhält
eine JSON response mit einer liste (ein eintrag kann mehrere wurzelelemente haben) von URLs
von objekten.

```json
[
"https://tla.bbaw.de/ths/get/CLJN6LLO5NDL7DY6HOP4XC4ELE",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Waere es nicht sinnvoller, hier gleich name und type dazu zu bekommen und nicht fuer jedes ergebnis noch einen request absetzen zu muessen? Gegenwaertig sieht die ausgabe einer solchen anfrage so aus:

http://tladev.bbaw.de:5002/ths/get/LCMP3D4CMZDLBPCVAH6VV5LCJQ/parents
[
  {
    "id": "SFMJKLYBONEOVPSZ5BYZEMR5OE", 
    "name": "Boeser, Pieter Adriaan Aart", 
    "type": "person"
  }, 
  {
    "id": "GHGBEBH62ZFPRFF5ELA4EZTKCI", 
    "name": "36 = Bibliographie", 
    "type": "bibliography"
  }
]

soll ich so lassen oder echt nur URLs zurueckgeben?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

s.o.

"https://tla.bbaw.de/ths/get/NDLBDCMPELEJNC4Y66FO5S4XHO",
]

```


### `/ths/search`

- method: `POST`
- method: `GET`

Man sucht eintraege deren `name` feld mit dem angegebenen `term` beginnen. Das ergebnis ist eine liste von objekten, enthalten im `results`-feld der `application/json`-response. Die einzelnen results enthalten jeweils `id`, `name` und `type`.
Man sucht eintraege deren `name` feld mit dem angegebenen `term` beginnen oder ihn
beinhalten. Das ergebnis ist eine liste von objekten, enthalten im `results`-feld der
`application/json`-response. Die einzelnen results enthalten jeweils `id`, `name` und
`type`.

Im body koennen/muessen folgende parameter angegeben werden:
Folgende parameter müssen oder können angegeben werden:

|name|range|funktion|default|
|---|---|---|---|
|`term`|mindestens 2 zeichen lang|suchbegriff der im `name` vorkommen soll|**required**|
|`search`|`{prefix\|contains}`|ob `term` am anfang von `name` oder irgendwo steht|`prefix`|
|`mode`|`{prefix\|contains}`|ob `term` am anfang von `name` oder irgendwo steht|`prefix`|
|`limit`|1-50, `int`|wie viele ergebnisse maximal|`50`|
funkyfuture marked this conversation as resolved.
Show resolved Hide resolved
|`type`|einzelner string oder liste von strings|man kriegt nur ergebnisse, deren `type` im parameter genannt ist|
|`offset`| |Index des ersten Items in den Gesamtergebnissen|`0`|
|`type`|liste von strings|man kriegt nur ergebnisse, deren `type` im parameter kommagetrent genannt sind|`[]`|

Die ergebnisse werden alphabetisch sortiert nach `name` und auf `limit` oder `50` stueck begrenzt. Beispiel:
Die ergebnisse werden alphabetisch sortiert nach `name` und auf `limit` oder `50` stueck
begrenzt. Beispiel:

```bash
curl -XPOST -HContent-Type:application/json http://tladev.bbaw.de:5002/ths/search -d '{"term":"h","limit":5}'
curl http://tladev.bbaw.de:5002/ths/search?term=ha&limit=5
funkyfuture marked this conversation as resolved.
Show resolved Hide resolved
```

```json
{
"length": 5,
Expand Down