Советы по разработке веб-API - PullRequest
9 голосов
/ 12 августа 2011

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

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

Макет выглядит следующим образом:

Server (database, programming logic)
|
API (handles user reads/writes)
|
Client application (the website, browser extensions, desktop app, mobile apps)
|
Client cache (further reduces server reads)

После вступления вот мои вопросы:

  1. это хорошее использование API
  2. Является ли хорошей идеей запустить весь сайт через API
  3. Какие варианты безопасной аутентификации у меня есть, используя API (и по какой-то причине я предпочитаю неиспользовать HTTPS)

РЕДАКТИРОВАТЬ

Дополнительные вопросы:

  1. Любые альтернативные подходы, которые я не рассматривал
  2. Какие потенциальные проблемы, которые я не учел, могут возникнуть при использовании этого подхода

Ответы [ 2 ]

17 голосов
/ 22 августа 2011

обо всем по порядку.

Вопрос о том, является ли дизайн (или вообще что-то) «хорошим», зависит от того, как вы определяете «добро». Типичными критериями являются производительность, ремонтопригодность, масштабируемость, тестируемость, возможность повторного использования и т. Д. Было бы полезно, если бы вы могли добавить некоторые из этого контекста.

Сказав это ...

Это хорошее использование API

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

Это хорошая идея, чтобы запустить весь сайт через API

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

Какие варианты безопасной аутентификации у меня есть, используя API (и по какой-то причине я предпочитаю не использовать HTTPS)

Сложный вопрос - с этим типом приложения вы должны различать аутентификацию пользователя и аутентификацию приложения. Для первых, OpenID или OAuth, вероятно, являются доминирующими решениями; для последнего взгляните, как Google требует, чтобы вы зарегистрировались, чтобы использовать их API Карт.

В большинстве веб-приложений HTTPS используется не для аутентификации (доказывая, что текущий пользователь является тем, кем они говорят), а для шифрования. Два связаны, но ни в коем случае не эквивалентны ...

Любые альтернативные подходы, которые я не рассматривал

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

Какие потенциальные проблемы, которые я не учел, могут возникнуть при использовании этого подхода

Управление версиями имеет большое значение для API - после того, как вы создали интерфейс, вы почти никогда не сможете его изменить, особенно с несколькими клиентами, которые вы не контролируете. Я бы встроил управление версиями как концепцию первого класса - с помощью RESTful API вы можете сделать это как часть URL.

0 голосов
/ 17 августа 2011
  1. Это хорошее использование API

    Зависит от того, что вы будете делать с этим приложением.

  2. Это хорошая идея для запускавесь сайт через API

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

  3. Какие у меня есть варианты для безопасной аутентификации с использованием API (и по некоторым причинам я предпочитаю не использовать HTTPS)

    Вы можете использовать omniauth

  4. Любые альтернативные подходы, которые я не рассматривал

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

  5. Какие потенциальные проблемы, которые я не учел, могут возникнуть при использовании этого подхода

    Сейчас я не понимаю вашу идею, но не вижу основныхопасность.

...