May the 4th be with you!

Das Star Wars API: Möge die Macht mit deinem API sein

Dominik Mohilo

© Shutterstock.com / forestgraphic

Entwickler sind (oft) Nerds. Nerds lieben Star Wars. Kein Wunder also, dass es so etwas wie das Star Wars API gibt. Dank der Schnittstelle können Entwickler auf etliche Datensätze über die Space Opera zugreifen – sei es über Personen, Planeten, die Filme selbst und vieles mehr. Wir haben uns das API angesehen, denn heute ist der vierte Mai: Der offizielle Star-Wars-Feiertag.

Der eigentliche Krieg der Sterne findet zwischen zwei Lagern von Nerds statt: Denen, die Star Trek mit Captain Kirk, dem Vulkanier Mr. Spock und Scotty dem Ingenieur bevorzugen, und jenen, die es eher mit Luke, Darth Vader und Chewbacca halten. Wer sich nicht in den unendlichen Weiten, sondern eher in einer weit entfernten Galaxie zu Hause sieht, für den gibt es mit dem Star Wars API einen praktischen Zugriff auf eine umfangreiche Datenbank zu allem Wissenswerten über die Jedi-Saga.

Star Wars: Das Erwachen des APIs

Zuerst das Negative: Das Star Wars API ist auf dem Stand des siebten Films „Star Wars: Das Erwachen der Macht“. Leider bedeutet das, dass weder das Spin-off „Rogue One“ noch der aktuellste Teil der Hauptreihe darin enthalten sind. Aber sei es drum, Episode I bis VII sind ja enthalten, und damit eine ganze Menge an Datensätzen.

Der Zugriff auf die Ressourcen findet über einen einfachen HTTP-Request statt; dieser kann zum Beispiel über curl oder das Tool HTTPie erfolgen. Für die Frage nach der ersten Figur der Filmreihe in der Datenbank, Luke Skywalker, sähe der Request wie folgt aus:

http http swapi.co/api/planets/1/

Verwendet man HTTPie, so sieht die auf die Anfrage ausgegebene Antwort in etwa so aus:

 
HTTP/1.0 200 OK
Content-Type: application/json
{
	"name": "Luke Skywalker",
	"height": "172",
	"mass": "77",
	"hair_color": "blond",
	"skin_color": "fair",
	"eye_color": "blue",
	"birth_year": "19BBY",
	"gender": "male",
	"homeworld": "https://swapi.co/api/planets/1/",
	"films": [
		"https://swapi.co/api/films/2/",
		"https://swapi.co/api/films/6/",
		"https://swapi.co/api/films/3/",
		"https://swapi.co/api/films/1/",
		"https://swapi.co/api/films/7/"
	],
	"species": [
		"https://swapi.co/api/species/1/"
	],
	"vehicles": [
		"https://swapi.co/api/vehicles/14/",
		"https://swapi.co/api/vehicles/30/"
	],
	"starships": [
		"https://swapi.co/api/starships/12/",
		"https://swapi.co/api/starships/22/"
	],
	"created": "2014-12-09T13:50:51.644000Z",
	"edited": "2014-12-20T21:17:56.891000Z",
	"url": "https://swapi.co/api/people/1/"
}
 

Neben den personenbezogenen Daten (Datenschützer gucken jetzt wohl besser weg) wie Name, Körpergröße, „Masse“ (was wohl das Gewicht des Darstellers sein soll), Haar- und Hautfarbe usw., gibt es auch Querverweise zu anderen Teilen der Datenbank. Mit einem zweiten Request würde man so etwa alles über den X-Wing Flieger (https://swapi.co/api/starships/12/) erfahren.

Es gibt sechs verschiedene Kategorien, die abgefragt werden können: Filme, Personen, Planeten, Spezies, Raumschiffe und Fahrzeuge. Eine genaue übersicht gibt es in der Ressource Root, die via http https://swapi.co/api/ abgefragt wird. In Sachen Encoding hat sich der Macher etwas Lustiges überlegt: Zum einen gibt es die klassische Ausgabe im JSON-Format, zum anderen kann man sich die Daten aber auch in der Sprache „Wookiee“ ausgeben lassen:

{
	"whrascwo": "Lhuorwo Sorroohraanorworc",
	"acwoahrracao": "172",
	"scracc": "77",
	"acraahrc_oaooanoorc": "rhanoowhwa",
	"corahwh_oaooanoorc": "wwraahrc",
	"worowo_oaooanoorc": "rhanhuwo",
	"rhahrcaoac_roworarc": "19BBY",
	"rrwowhwaworc": "scraanwo",
	"acooscwoohoorcanwa": "acaoaoakc://cohraakah.oaoo/raakah/akanrawhwoaoc/1/",
	"wwahanscc": [
		"acaoaoakc://cohraakah.oaoo/raakah/wwahanscc/2/",
		"acaoaoakc://cohraakah.oaoo/raakah/wwahanscc/6/",
		"acaoaoakc://cohraakah.oaoo/raakah/wwahanscc/3/",
		"acaoaoakc://cohraakah.oaoo/raakah/wwahanscc/1/",
		"acaoaoakc://cohraakah.oaoo/raakah/wwahanscc/7/"
	],
	"cakwooaahwoc": [
		"acaoaoakc://cohraakah.oaoo/raakah/cakwooaahwoc/1/"
	],
	"howoacahoaanwoc": [
		"acaoaoakc://cohraakah.oaoo/raakah/howoacahoaanwoc/14/",
		"acaoaoakc://cohraakah.oaoo/raakah/howoacahoaanwoc/30/"
	],
	"caorarccacahakc": [
		"acaoaoakc://cohraakah.oaoo/raakah/caorarccacahakc/12/",
		"acaoaoakc://cohraakah.oaoo/raakah/caorarccacahakc/22/"
	],
	"oarcworaaowowa": "2014-12-09T13:50:51.644000Z",
	"wowaahaowowa": "2014-12-20T21:17:56.891000Z",
	"hurcan": "acaoaoakc://cohraakah.oaoo/raakah/akwoooakanwo/1/"
}

Star Wars: Angriff der Klon-Requests

Das Star Wars API ist komplett offen und frei nutzbar. Das ist erfreulich, da man keine schwerfällige Authentifizierung durchführen muss, allerdings kann daher auch nur auf die Daten zugegriffen werden. Das heißt im Klartext: Findet man einen Fehler, kann er nicht behoben werden, stattdessen muss man sich mit Paul Hallett, dem Autor des APIs, in Verbindung setzen. Zudem sind pro IP-Adresse lediglich 10.000 Abfragen der Datenbank pro Tag möglich.

Star Wars: Die Community schlägt zurück

Wie beliebt das Star Wars API ist, zeigt auch die Tatsache, dass es sogar ein Video-Tutorial für die Schnittstelle gibt. Gary Jennings zeigt darin auf YouTube, wie man das API selbst richtig einsetzen kann.

Zu guter Letzt seien noch die zahlreichen Hilfsbibliotheken erwähnt, die von der Community bereitgestellt werden. Diese helfen Entwicklern dabei, das Star Wars API in den unterschiedlichsten Sprachen zu konsumieren, hier eine Liste:

Python

JavaScript

Android

Java

Go

PHP

Ruby

C#

Objective C

Angular

Angular 2+

R

F#

Elixir

Sämtliche Informationen zum Star Wars API gibt es auf der offiziellen Homepage, in der Dokumentation sind alle relevanten Details für Entwickler zusammengefasst.

May the Force be with you!

Verwandte Themen:

Geschrieben von
Dominik Mohilo
Dominik Mohilo
Dominik Mohilo studierte Germanistik und Soziologie an der Goethe-Universität in Frankfurt. Seit 2015 ist er Redakteur bei S&S-Media.
Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.