2013-03-13 2 views
1

В настоящее время я нахожусь в создании внешнего API на веб-сервере. Веб-сервер использует Rails, поэтому внутренние переменные называются в snake_case. Но большинство вызовов в api будет выполняться через javascript, который обычно использует lowerCamelCase для переменных имен.Предложения для переменных случаев в API

Мой вопрос заключается в следующем: может ли кто-нибудь предложить стратегию, для которой нарисована линия между переменными случая змеи и переменными случая верблюда? Если сервер принимает переменные, отправленные в случае с верблюдом, уклоняясь от кода сервера (особенно потому, что маршрутизированные параметры обрабатываются частью условного обозначения рельсов). Или нужно, чтобы клиент javascript был вынужден отправлять переменные в случае с змеей, уклоняясь от клиента?

Любые идеи приветствуются, но если у кого-то есть ссылки на какую-либо документацию или информацию из источника с опытом разработки API, это было бы идеально. Ребята из Apigee рекомендуют использовать JSON по умолчанию и использовать camelCase в своем веб-документе Api doc, но мне интересно узнать, есть ли какие-либо другие рекомендации типа лучшей практики.

Благодаря

ответ

0

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

Теперь, если ваши клиенты всегда будут использовать ajax для доступа к вашему API, действительно было бы разумно разоблачить интерфейс на основе camelcase.

Хорошая новость заключается в том, что ничто не мешает вам иметь лучшее из обоих миров: просто создайте класс конвертера camelcase/snakecase. Он будет анализировать параметры при получении запроса и возвращать хеш нормализованных параметров, и обратно ваши модели будут вызваны в их методе as_json, чтобы вернуть спрятанные ключи.

Это решение добавляет некоторые накладные расходы, но имеет преимущество в том, чтобы сделать ваши соглашения об именах и правилах преобразования явными, как и ActiveModel::Naming и тому подобное.

+0

Да, справедливо. Определенно дизайнерское решение, просто ищет некоторые предложения. Благодаря! – pschuegr

Смежные вопросы