2010-08-28 13 views
15

¿Es una buena práctica desarrollar la API mientras desarrolla el sitio para que el sitio en realidad use la API? ¿O hay un golpe de rendimiento si elige hacer esto?¿Es una buena práctica que un sitio web use su propia API?

Por ejemplo, ¿alguien sabe si los sitios maduros como Facebook o Digg utilizan su propia API para CRUD (crear, leer, actualizar, eliminar) o tienen su propio backend? Gracias

Respuesta

12

dudo Facebook y tal uso de su propia API. Hay un par de razones para no utilizar su propio API para el mismo sitio:

  1. Puede hacer que el acceso a datos con más prestaciones mediante el uso de la base de datos directamente en lugar de hacer solicitudes adicionales y (de) la serialización.
  2. Probablemente sea más fácil implementar un almacenamiento en caché eficiente con memcached etc.
  3. Es importante que no tenga que ajustarse a su API pública cuando amplíe su sitio (no desea cambiar su API pública muy a menudo, eso solo molestar a todo el mundo)
0

si está utilizando algún ejemplo framework MVC como un back-end, entonces ya tiene algo de dicha API ABM, o puede utilizar algo así como los marcos de ORB, que se dirigen a una esfera, como DB, por ejemplo, y el uso de su API para controlar su aplicación, también su puede haber cualquier cosa.

Pero no estoy aconsejando que utiliza SQL primas, especialmente al comienzo. por lo tanto, cuénteme los idiomas del lado del servidor que prefiera y los objetivos del proyecto web, y la comunidad podría aconsejarlo con algunas ideas nuevas.

0

no, no escribir sus propias herramientas o CRUD ORMS. Existen suficientes frameworks listos para usar que ya han hecho todo el trabajo de construir API/frameworks/utilidades para usted; solo puede cosechar las recompensas de productividad al usarlas. También habrán considerado implicaciones de rendimiento. La única penalización es una pequeña curva de aprendizaje para cada uno.

Dicho esto, todavía puede definir una forma/práctica estándar para utilizar estas API para garantizar la uniformidad (y la capacidad de mantenimiento) a medida que su aplicación crece y se hace más antigua.

Y si quiere protegerse aún más por el cambio (o cubrir sus apuestas) se puede componentes tercero abstracto del partido y los marcos mediante el uso de interfaces y la inversión de dependencia (por ejemplo. DI o localizador de servicios de patrones)

2

yo creo es una buena idea tener una interfaz de bajo nivel para la aplicación que puede usar sin un navegador per se, y que el sitio debe usar esa interfaz para hacer sus cosas.

Esa interfaz no tiene por qué ser la API en sí misma, podría ser una capa de menor nivel que la API, y es utilizada tanto por la API como por el sitio web de producción.

En general, es una mala idea si la API simplemente duplica el sitio web.

es decir, el siguiente es mala

# hypothetical example of bad duplication 

def website_update_blog_post(request): 
    user = request.username() 
    ensure_logged_in(user) 
    post = Posts.objects.upsert(request.post_title, request.post_body) 
    trigger_notifications(post) 

..... 

def api_update_blog_post(user, password, title, body): 
    verify_login(user, password) 
    post = Posts.objects.upsert(title, body) 
    trigger_notifications(post) 
Cuestiones relacionadas