Kann mir jemand helfen eine eigene API zu erstellen?

1 Antwort

Von Experte BoundfoxStudios bestätigt

Wie ich bereits gestern schrieb, kannst du auf deinem Raspberry PI einen Webserver installieren und auf dem deine API-Anwendung laufen lassen. Bei C#-Kenntnissen wäre die Kombination aus IIS-Server und ASP.NET-(Web API-)Anwendung günstig, bei Python-Kenntnissen wiederum Gunicorn mit einer Anwendung, die ein Framework wie Flask (+ FlaskRestful) o.a. (Cornice/eve/Falcon/...) verwendet.

Damit die Spielanwendung auf die API zugreifen kann, muss die Webanwendung auch öffentlich erreichbar sein. Das heißt, du bräuchtest eine Portweiterleitung (HTTP/80, HTTPS/443) seitens deines Routers an deinen Raspberry PI und eine registrierte Domain. Die Kommunikation über das HTTPS-Protokoll sollte via TLS verschlüsselt werden. Zertifikate kannst du dir kostenlos bei Let's Encrypt holen.

Zu all diesen Themen (Serverinstallation/-einrichtung, Zertifikat erstellen, etc.) dürftest du genügend technische Anleitungen im Web finden.

Deine Webanwendung braucht ebenso Zugriff auf die Cloud, um die Daten zu erhalten, die sie später weitergeben soll. Es wäre vermutlich sinnvoll, die Daten sogar auf dem Raspberry noch einmal zwischenzuspeichern (dabei könnte ein SQLite-System Verwendung finden) und nur alle x Minuten/Stunden via Cronjob zu aktualisieren. Auf diese Weise könntest du jedenfalls die Antwortzeiten der API verkürzen. Prinzipiell wäre es sinnvoll, bei der Entwicklung der API zu schauen, wo und wann man Daten am besten zwischenspeichern kann (Caching). Auch die Spielanwendung könnte versuchen, Anfragen an die API einzusparen, indem sie deren Antworten für eine bestimmte Zeit im Arbeitsspeicher hält.

Das Format für die Anfrage und Rückgabe solltest du auch noch festlegen (bevor du mit der tatsächlichen Entwicklung der Webanwendung beginnst). Du solltest überlegen, welche URL-Endpunkte du brauchst (wie sieht also die URL bzw. Route aus, die mir die Daten X oder Y zurückliefern soll) und welches Datenformat (JSON, XML, CSV, ...) sich am besten eignet, um die Daten schnell zu transportieren und einfach auf Client-Seite auszuwerten.