2010-06-28 2 views
6

In meinen 4 Jahren Erfahrung habe ich eine Menge Web-Anwendungen entwickelt. Jetzt, das Konzept von programmierbare Web immer beliebter, neue APIs werden fast jeden Tag veröffentlicht. Ich möchte eine Java-API/Bibliothek für einige dieser endpoints.Ex stackapps entwickeln, reddit, digg etc ... Was ich möchte von Ihnen Menschen wissen,API Entwicklung - Design Überlegungen

  • Wie ist die API von der reguläre Web Anwendungen unterscheiden sich von der API dieser Bibliotheken. Oder was ist der Unterschied zwischen diesen beiden von Design Perspektive
  • Was sind die besten API-Entwicklung Praktiken.
  • Was sind die Faktoren, die ich

vor der Gestaltung der API berücksichtigen müssen.

Bitte kommentieren Sie, wenn die Details nicht ausreichen.

+1

Gute Frage. Ich freue mich auf aufschlussreiche Antworten von den Staplern. –

Antwort

13

Stabilität

Wenn Sie eine API, um Ihren Web-App zur Verfügung stellt, ist es wahrscheinlich, weil Sie andere Menschen wollen Anwendungen erstellen, es zu benutzen. Wenn es nicht stabil ist, werden sie dich dafür hassen, dass sie gezwungen werden, deinen häufigen Änderungen zu folgen. Wenn dies zu lange dauert, bleibt ihre Site möglicherweise lange Zeit nicht funktionsfähig, während sie die neue Vorgehensweise in Ihrer API ermitteln.

Endlichkeits

Sie wollen, dass die API vollständig, aber kompakt, wie es in nicht allzu viel zu merken zu sein.

Orthogonality

Entwurf es so gibt es eine und nur eine Art und Weise jede Eigenschaft zu ändern oder eine Aktion auslösen. Aktionen in einer orthogonalen API sollten minimale (wenn überhaupt) Nebenwirkungen haben.

Es ist auch keine gute Praxis, eine Funktion von einer öffentlichen API einmal veröffentlicht zu entfernen.

Sicherheit und Authentifizierung

Da die API Web-ausgesetzt, werden Sie jede Anforderung authentifizieren müssen und angemessenen Zugang zu gewähren. Der gesunde Menschenverstand gilt hier.

Schnelle Antworten oder in Stücke brechen

ich in einer Web-Umgebung glauben, sollten wir schnell Antworten haben und vermeiden Anfragen, die zu lange dauern wird abzuschließen. Wenn es unvermeidlich ist, dann ist es besser, ein ACK zu senden und die Aufgabe in mehrere Teile und nachfolgende Aufrufe aufzuteilen.

0

Aus meiner Erfahrung wurden alle guten API nicht gemacht, um ein generisches Problem zu lösen, sondern um ein Problem für einige zu lösen, die eine gewisse Abstraktion erfordert. Diese Abstraktion entwickelt sich dann, wenn sich die Anforderung und/oder die zugrunde liegende Schicht ändert.

Also statt die API zu finden, die alles tun wird, würde ich damit beginnen, ein oder zwei gute Fall Problem zu finden, wo Ihre API helfen könnte.

+0

Ich glaube nicht, dass er eine neue API finden oder sogar erstellen möchte, sondern einen Wrapper um eine vorhandene API erstellen möchte, um das Web unsichtbar zu machen. Ist das korrekt, Chedine? –

+0

Nein. Ich möchte eine API erstellen. Zum Beispiel hat digg seine HTTP-Endpunkte angekündigt, um auf seine Ressourcen zuzugreifen. Ich möchte eine Open-Source-Java-API erstellen, die sich unter der Haube mit diesen Endpunkten verbinden kann. – chedine

+0

Immer noch das gleiche Problem. Sie können nicht einfach eine Schnittstelle haben, die alles aggregiert, nicht wahr? Sie können nicht einfach das übliche Zeug nehmen und das spezialisierte Zeug zur Seite legen. Wenn es darum geht, einen Wrapper zu erstellen, der verschiedene APIs für Websites unterstützt, ist das nicht eine API für sich? – Wernight

Verwandte Themen