¿Debería un sitio web utilizar su propia API pública?

31

Estoy empezando a escribir un servicio web, y lo he construido con nodeJS y un enfoque RESTfulish.

Por lo que sé:

  • La ventaja es que no tiene que duplicar el código.
  • Las desventajas son que usted:
    • actualizará la API pública con frecuencia, pero debe resolverse con versiones
    • Realmente no se pueden realizar optimizaciones y almacenamiento en caché específico del servicio

¿Qué se considera mejor práctica? ¿Los sitios como Stack Exchange, Github, Twitter, etc. utilizan sus propias API para sus clientes?


fuente
12
Comer tu propia comida para perros también te llevará a mejorar tu API pública
Ben Brocka
Así es como lo hace Amazon.
OliverS
2
Para agregar al punto de OlverS, vea Google Platforms Rant
Brian

Respuestas:

37

Absolutamente debe usar su propia API. Este concepto es ampliamente conocido como alimentación para perros y tiene muchos beneficios más allá de evitar la duplicación de código.

  • Comportamiento consistente entre su sitio / producto y lo que los consumidores de API escribirán (es decir, sus expectativas de su API)
  • Otra forma de prueba.
  • Puede y encontrará errores en la API antes de que lo hagan sus clientes, lo que hace que sus resoluciones cuesten menos.

Aunque me gustaría argumentar en contra de uno de sus puntos: usted debe no ser la actualización de la API de frecuencia. Dedique tiempo a diseñar y probar una API que se mantendrá por un tiempo. Afortunadamente, la alimentación de perros de esta manera hará cumplir eso. Donde antes habría roto el código del cliente, ahora estará rompiendo su propio código. Cuando debe hacerlo , sí, el control de versiones es una solución, pero debe evitarse.

Steven Evers
fuente
0

por alguna razón no me deja iniciar sesión como el cartel de la pregunta, pero fui yo. No puedo aceptar tu respuesta, ojalá pudiera, tiene mucho sentido.

Sin embargo, ¿cómo puede no querer actualizar su API? ¿Qué hay de agregar nuevas funciones, eliminar las impopulares, refactorizar, etc.

stanm87
fuente
Oye. Esto debería ser un comentario sobre su respuesta, pero no creo que tenga suficiente representante para comentar. De todos modos, el punto es que no debes actualizar la API con frecuencia . E incluso entonces, agregar nuevas funciones no es un problema: no puede romper el código existente. ¿Por qué eliminar los impopulares? Hágalos desaprobados y elimínelos en algún momento en el futuro después de que las personas hayan tenido mucho tiempo para responder a la desaprobación.
Max
2
Agregar métodos a una API está bien, cambiar una API existente es malo porque romperá cualquier código que dependa de la API.
Bryan Oakley
@ stanm87: Max y Bryan lo dijeron bien. Debe evitar cambiar el contrato de su API (es decir, la interfaz y el comportamiento esperado, de trabajo). La gente dependerá de eso si usarán su API y si la cambia, romperá su código.
Steven Evers
Muchas gracias por aclarar. @Max No puedo comentar su respuesta
stanm87