mardi 17 février 2015

HTTP REST API's in SQL schreiben

Hallo Leute,



Vorab: ich stelle diese Frage in diesem Forum, weil hier viele schlaue Köpfe unterwegs sind und weil Java (neben PHP) in diesem Bereich sehr stark vertreten ist. Es hat mit Java an sich eigentlich nichts zu tun.



Mir geht seit ein paar Tage folgender Gedanke nicht mehr aus denk Kopf: Es existieren unzählige REST APIs im Netz. Der Eigentliche Grund, warum man eine REST API schreibt anstatt einen öffentlichen SQL-User im Server anzulegen, welcher nur lesen darf (vgl. anonymes FTP) ist, dass man den Kontext kontrollieren möchte, in welchem Daten abgefragt werden.

Daten, die über eine öffentliche API bereitgestellt werden (etwa für eine App o.ä.) sind ohnehin öffentlich verfügbar. Sie per SQL verfügbar zu machen hat nur einen Nachteil: Die User können die Informationen beliebig abgreiffen und man kann den genauen Zugriff nicht kontrollieren.



Deshalb schreibt man REST APIs in allen möglichen Sprachen. Sie alle sind aber nur schnittstellen, um etwas aus der Datenbank zu lesen (und selten mal, um etwas zu schreiben).



Warum also schreibt man REST APIs nicht gleich in SQL? Folgende Möglichkeit schwebt mir vor Augen: Man definiert (per XML oder JSON o.ä.) Tabellen und Relationen. Zusätzlich noch "Filter", welche die Menge und den Kontext der abrufbaren Daten stark einschränken (wie etwa soft-deletion etc).

Das abarbeiten der Requests, das intelligente Cachen, die Zugriffskontrolle (OAuth, Rate-Limiting, etc.) und das erstellen des XML/JSON Outputs übernimmt eine Software. Der Entwickler muss nur seine API Definition (in den meissten fällen wahrscheinlich nicht mehr als ein paar 100 Zielen XML) pflegen anstatt einer rieseige Codebasis.



EDIT: Ja, ich weiss, SQL in XML abzubilden ist nichts schönes, vor allem weil SQL deutlich komplexer ist. Für Abfragen, welche eine derartige Komplexität benötigen, würden aber SQL Views sehr gut herhalten. Die neben den XML files zu pflegen ist meiner Meinung nach nicht wirklich ein mehraufwand.



Ich vermute man könnte mit so einer Software die Entwicklungszeit, die Sicherheit und die Performance von REST APIs extrem steigern. Was haltet ihr davon?





HTTP REST API's in SQL schreiben

0 commentaires:

Enregistrer un commentaire