Hinweise zur Nutzung der BIS API

Aus BIS Wiki

In dieser Seite finden Sie Hinweise zur Nutzung der sogn. 'BIS API', einer Sammlung von Schnittstellung im JSON Format. Über diese Schnittstellen lassen sich Teile der öffentlichen BIS Daten automatisiert abrufen.

Grundlegende Hinweise

Die Schnittstellen sollen die Wiederverwendung der entsprechenden Daten in anderen Webseiten oder Apps ermöglichen. Dabei sollten folgenden Hinweise beachtet werden:

  • Zugriffe auf die Schnittstellen dürfen nicht mit einer zu hohen Geschwindigkeit erfolgen, da sie sonst von DoS Schutzfunktionen der BIS Server gestoppt werden. Dazu finden sich weitere Hinweise unten
  • Ziel der Schnittstellen ist es nicht den Aufbau von alternativen Versionen der BIS Anwendungen zu ermöglichen, sondern eine Möglichkeit zu bieten spezialisierte Anwendungen zu realisieren, die nicht im Rahmen der Weiterentwicklung des BIS angeboten werden können oder sollen
  • Die Schnittstellen sollen eine Alternative zum Webscraping der BIS Webseiten bieten, die in ihrem Format stabil bleibt

Einstieg

Eine Übersicht der angebotenen Schnittstellen bietet diese Seite:

https://ekvv.uni-bielefeld.de/bisapi/openapi/#/

Das OpenAPI Format lässt sich in vielen Programmiersprachen direkt in entsprechende Endpunkte umsetzen.

Zugriffsratenbeschränkung

Die öffentlichen Seiten der BIS Server werden durch einen dynamischen Filter vor zu hohen Zugriffsraten von einzelnen Clients geschützt. Dabei wird eine Ratenlimitierung auf Ebene von IP-Adressen durchgesetzt. Der Filter ist hier als Open Source Projekt verfügbar:

https://github.com/ihbrune/Anti-DoS-Valve

Dort findet sich eine Simulationsmöglichkeit die zeigt, wie sich der Filter verhält. Es gibt aktuell zwei Filter in den BIS Servern:

Der generelle Filter
  • Dieser Filter gilt für alle Zugriffe auf die BIS Server und ist auch für interne Systeme aus dem Netz der Hochschule der begrenzende Faktor. Er ist Stand 10/2021 mit diesen Parametern konfiguriert:
numberOfSlots="20"
slotLength="10"
allowedRequestsPerSlot="100"
shareOfRetainedFormerRequests="1"
Der externe Filter
  • Auf Zugriffe, die nicht aus dem Netz der Hochschule kommen, wird noch ein zweiter Filter angewendet, der die Zugriffsrate stärker begrenzt. Er ist Stand 10/2021 mit diesen Parametern konfiguriert:
numberOfSlots="20"
slotLength="15"
allowedRequestsPerSlot="50"
shareOfRetainedFormerRequests="5"

Sie können diese Werte in das in der Github Seite verlinkte Google Drive Sheet einsetzen und sehen dann das genaue Verhalten.

Eine generelle Ausnahme von diesen Beschränkungen ist nicht möglich.

Gerade für Tests und die Softwareentwicklung gegen die Schnittstellen ist es hilfreich sich einen Reverse Proxy (z. B. nginx) einzurichten, den man dann zwischen die eigene Programmierung und unsere Server stellt. Dann kann man auf dem Cache schnellere Abfragen durchführen.

Für eine produktive Umgebung kann es sich anbieten das Abrufen der Daten aus dem BIS von der eigentlichen Verarbeitung zu trennen, und den Abrufvorgang so robust zu gestalten, dass er auch bei temporären Sperrungen in der Lage ist fehlende Daten erneut abzurufen.