REST API benutzen

Hallo zusammen,

OJS 3.1 bringt eine REST API mit.
Siehe: https://pkp.sfu.ca/2017/09/22/pkp-2017-sprint-report-rest-api/

Wir würden diese Funktion gerne nutzen.
Leider finde ich nirgendwo eine Dokumentation dazu und weiß nicht was ich dafür tun muss.

Wo finde ich die nötigen Infos?
Hat jemand schon Erfahrung damit?

Ich freue mich auf Eure Antworten.

Es gibt in einem anderen Post auf dem PKP-Blog einige Infos und Links dazu in den Kommentaren:

Hallöchen,

also ich habe selbst schon ein wenig mit der API gearbeitet. Ich kann mal kurz berichten:

Ich habe erst einmal angefangen die Swagger Datei mit Paw zum importieren, weil es das “Rumspielen” mit einer API einfacher macht als einfach nur mit cURL zu experimentieren.

Der erste Stolperstein für mich war die Frage wie eigentlich der API-Key übergeben werden muss. Besonders weil die API in der aktuellen Version noch immer einen 404 Fehler bei einem Fehler bei der Authentifizierung gibt.

Eigentlich ist es recht einfach. Unter /user/profile bei API Key “Enable external applications with the API key to access this account” aktivieren und auf alle Fälle einen neuen Key generieren lassen. Ich hatte am Anfang schon einen Key dort stehen, der aber nicht funktioniert hatte soweit ich mich erinnere.

Der API Key muss als GET Parameter apiToken übergeben werden. Also sieht die URL für den Endpoint aller Issues eines Journals wie folgt aus:

https://foo-journal.bar/index.php/0001/api/v1/issues?apiToken=TOKEN

Tatsächlich ist der Editor bei swagger.io, der in den Kommentaren des Blogposts verlinkt ist, den @ojsbsb verlinkt hat, recht brauchbar um sich die API-Endpoint anzuschauen und zu sehen welche Daten da jeweils zurück kommen können.

Es gibt aber eine starke Einschränkung mit der API aktuell: Soweit ich sehen kann ist die API aktuell Read Only. Ich habe zwar noch nicht nachgefragt/selbst in den Code geschaut, aber weder POST noch PUT Endpoints vorhanden sind dürfte das Ändern der Daten über die API aktuell nicht möglich sein.

Ich hoffen das hilft erst einmal weiter.

Vielen Dank für die schnellen Antworten :slight_smile:

@ojsbsb: Das hilft mir leider nicht so richtig, da ich erstmal überhaupt wissen muss, wie ich die Schnitsstelle ansprechen kann.

@MarHerUMR: Vielen Dank! Das sind genau die Informationen, die mir gefehlt haben. Ich werde mich damit mal näher auseinander setzen und mich wieder melden.

Ich hijacke den Thread mal mit einer REST-spezifischen Frage:

Habt ihr zufällig mit dem neue 3.1.1.0 Update auch Probleme mit den Query-Parametern? Eine Anfrage wie z.B. api/v1/issues?count=20&years=2017 gibt jetzt nach dem neuen Update auch Einträge aus anderen Jahren zurück. Weder “years”, noch “volumes” scheint zur Eingrenzung zu funktionieren. Unter 3.1.0.1 funktionierte dies noch tadellos.

Ich habe es gerade mal mit meiner lokalen Entwicklungsinstallation (gestern auf den aktuellen git master stand aktualisiert) probiert. Ich kann sagen, dass der Fehler dort auf alle Fälle auch auftritt. Wenn unser Produktivsystem das Update gemacht hat werde ich dort auch noch mal testen.

Ich habe dazu ein github issue dazu aufgemacht.

Dabei habe ich gesehen, dass für die 3.2 geplant ist ein automatisches Testsystem für die API zu haben. Damit dürften sich diese Probleme für die Zukunft erübrigen.

1 Like

Lieber @mlfct,

Nate hat sich die Sache angeschaut und gefixt. Ich habe das noch nicht getestet. Aber in dem Github-Issue ist ein Pull-Request referenziert, der das Problem beheben sollte.

Danke dir - hatte es am Montag gleich implementiert und funktioniert einwandfrei soweit.