Перво-наперво.
Вопрос о том, является ли дизайн (или вообще что-либо) «хорошим», зависит от того, как вы определяете «хорошесть». Типичными критериями являются производительность, ремонтопригодность, масштабируемость, тестируемость, возможность повторного использования и т. д. Было бы полезно, если бы вы могли добавить что-то из этого контекста.
Было сказано, что...
Хорошее ли это использование API?
Обычно рекомендуется отделить бизнес-логику от логики представления и логики сохраняемости данных. Ваш дизайн делает это, и поэтому я был бы счастлив назвать его «хорошим». Вы можете посмотреть на формальный шаблон проектирования, чтобы сделать это - Контроллер представления модели, вероятно, является текущим значением по умолчанию, особенно. для веб-приложений.
Хорошо ли запускать весь веб-сайт через API?
Ну, это зависит от приложения. Вполне возможно написать приложение полностью на Javascript/Ajax, но есть проблемы с совместимостью браузеров (особенно для старых браузеров), и вам необходимо создать поддержку того, что пользователи обычно ожидают от веб-приложений, таких как глубокие ссылки и удобство для поисковых систем. Если у вас есть хорошо продуманный API, вы можете выполнять часть генерации страниц на сервере, если это упростит задачу.
Какие у меня есть варианты безопасной аутентификации с использованием API (по какой-то причине я предпочитаю не использовать HTTPS)
Хитрость — с таким приложением вы должны различать аутентификацию пользователя и аутентификацию приложения. В первом случае OpenID или OAuth, вероятно, являются доминирующими решениями; для последнего посмотрите, как Google требует от вас регистрации, чтобы использовать их API Карт.
В большинстве веб-приложений HTTPS используется не для аутентификации (доказательство того, что текущий пользователь является тем, кем он себя называет), а для шифрования. Они связаны, но ни в коем случае не эквивалентны...
Любые альтернативные подходы, которые я не рассматривал
Возможно, это больше подходит для вопроса 5, но, по моему опыту, проектирование API — это довольно эзотерический навык — разработчику API трудно точно предсказать, что понадобится клиенту API. Я бы серьезно подумал о том, чтобы написать приложение без API для вашей первой клиентской платформы, а затем исключить API — таким образом вы создадите только то, что вам нужно в первом выпуске.
Какие потенциальные проблемы, которые я не учла, могут возникнуть при использовании этого подхода
Управление версиями имеет большое значение для API: как только вы создали интерфейс, вы почти никогда не сможете его изменить, особенно если у вас есть несколько клиентов, которыми вы не управляете. Я бы встроил управление версиями в качестве первоклассной концепции — с RESTful API вы можете сделать это как часть URL-адреса.
person
Neville Kuyt
schedule
22.08.2011