Должен ли сайт использовать собственный публичный API?

31

Я начинаю писать веб-сервис, и я создал с помощью nodeJS и подходом RESTfulish.

Из того, что я собираю:

  • Преимущество в том, что вам не нужно дублировать код.
  • Недостатки в том, что вы:
    • будет часто обновлять публичный API, но должен решаться с помощью версий
    • не может реально сделать сервис кеширования и оптимизации

Что считается лучшей практикой? Используют ли сайты, такие как Stack Exchange, Github, Twitter и т. Д., Свои собственные API-интерфейсы для своих клиентов?


источник
12
Употребление в пищу собственного собачьего корма также заставит вас улучшить свой публичный API
Бен Брока
Вот как это делает Amazon.
OliverS
2
Чтобы добавить точку зрения OlverS, см. Google Platforms Rant
Брайан,

Ответы:

37

Вы должны абсолютно использовать свой собственный API. Эта концепция широко известна как собачий корм, и она имеет много преимуществ, помимо избежания дублирования кода.

  • Последовательное поведение между вашим сайтом / продуктом и тем, что будут писать потребители API (т.е. их ожидания от вашего API)
  • Еще одна форма тестирования.
  • Вы можете и найдете ошибки в API раньше, чем это сделают ваши клиенты, благодаря чему их решения обходятся дешевле.

Хотя я бы поспорил с одним из ваших замечаний: вам не следует часто обновлять API. Потратьте время на разработку и проверку API, который останется на некоторое время. К счастью, собачий корм таким образом обеспечит это. Там, где раньше вы просто ломали код клиента, теперь вы будете ломать свой собственный код. Когда вы должны , да, версионирование - это решение, но его следует избегать.

Стивен Эверс
источник
0

по какой-то причине он не позволит мне войти в качестве автора вопроса, но это был я. Я не могу принять ваш ответ, если бы я мог, это имеет большой смысл.

Однако, как вы можете не хотеть обновлять свой API? А как насчет добавления новых функций, удаления непопулярных, рефакторинга и т. Д.?

stanm87
источник
Привет. Это должен быть комментарий к его ответу - но я не думаю, что у вас достаточно представителей, чтобы комментировать. В любом случае, дело в том, что вы не должны часто обновлять API . И даже тогда, добавление новых функций не проблема - это не может сломать существующий код. Зачем удалять непопулярные? Сделайте их устаревшими и удалите их когда-нибудь в будущем, после того, как люди долго реагировали на осуждение.
Макс
2
Добавление методов в API - это хорошо, изменение существующего API - это плохо, потому что это нарушит любой код, который зависит от API.
Брайан Оукли
@ stanm87: Макс и Брайан сказали это хорошо. Вы должны избегать изменения контракта вашего API (то есть интерфейса и ожидаемого, рабочего, поведения). Люди будут зависеть от того, будут ли они использовать ваш API, и если вы его измените, это нарушит их код.
Стивен Эверс
Большое спасибо за разъяснения. @ Макс я действительно не могу прокомментировать его ответ
stanm87