Полезно ли для веб-сайта использовать собственный API?

Является ли хорошей практикой разработка API при разработке сайта, чтобы сам сайт фактически использовал API? Или есть ли снижение производительности, если вы решите это сделать?

Например, кто-нибудь знает, используют ли зрелые сайты, такие как Facebook или Digg, свой собственный API для CRUD (создание, чтение, обновление, удаление) или у них есть свой собственный бэкенд? Спасибо

16
задан Laurel 15 May 2016 в 18:37
поделиться

4 ответа

Я сомневаюсь, что Facebook и подобные компании используют собственный API. Есть несколько причин не использовать собственный API для самого сайта:

  1. Вы можете сделать доступ к данным более производительным, используя базу данных напрямую, вместо дополнительных запросов и (де)сериализации.
  2. Вероятно, проще реализовать эффективное кэширование с помощью memcached и т. д.
  3. Важно отметить, что вам не нужно будет соответствовать вашему общедоступному API при расширении вашего сайта (вы не хотите слишком часто менять свой общедоступный API, это просто раздражать всех)
13
ответ дан 30 November 2019 в 22:49
поделиться

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

Этот интерфейс не обязательно должен быть самим API, это может быть слой более низкого уровня, чем API, и который используется как API, так и рабочим веб-сайтом.

Как правило, это плохая идея, если API просто дублирует веб-сайт.

т. е. следующая плохая

# 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)
2
ответ дан 30 November 2019 в 22:49
поделиться

если вы используете некоторые, например. MVC framework в качестве бэкенда, то у вас уже есть какой-то такой CRUD API, или вы можете использовать что-то вроде ORB frameworks, которые направлены в какую-то сферу, например DB, и использовать их API для управления вашим приложением, также это может быть что-либо.

Но я не советую вам использовать чистый SQL, особенно на старте. Итак, скажите мне, какие серверные языки вы предпочитаете, и цели веб-проекта, и сообщество может посоветовать вам несколько новых идей.

0
ответ дан 30 November 2019 в 22:49
поделиться

Нет, не пишите свои собственные инструменты CRUD или ORMS.Существует достаточно готовых фреймворков, где вся тяжелая работа по созданию API / фреймворков / утилит уже сделана за вас — вы можете просто пожинать плоды производительности, используя их. Они также рассмотрят последствия для производительности. Единственным наказанием является небольшая кривая обучения для каждого.

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

И если вы хотите дополнительно защитить себя от изменений (или застраховать свои ставки), вы можете абстрагировать сторонние компоненты и платформы с помощью интерфейсов и инверсии зависимостей (например, DI или шаблон локатора сервисов)

0
ответ дан 30 November 2019 в 22:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: