2014-10-03 3 views
0

Простой вопрос: как вы выставляете константы в java-движке Google API конечных точек? напримерКак выставить константы в java-движке Google API конечных точек?

public static final int CODE_FOO = 3845; 

Я хотел бы клиент из Endpoints, чтобы иметь возможность соответствовать на CODE_FOO, а не на 3845, я в конечном итоге делает перечислений оберток (который, вероятно, лучше в любом случае), но я просто начиная любопытно, если это даже выполнимо? Thx

+0

Можете ли вы объяснить, что вы подразумеваете под «match on»? Что именно вы хотите, чтобы клиент и сервер выполняли эту константу? – David

+0

говорит, что сервер возвращает ResultCode, который является простым владельцем int. клиент должен соответствовать по возвращенным междунар расшифровать значение, VI заявление переключателя или серии, если/иначе если (resultcode.getCode == FooApi.OK_CODE) // если (resultcode.getCode == FooApi.BAR_CODE) // etc – Creos

+0

Тогда почему бы вам не вернуть String/Enum? – David

ответ

0

Обратите внимание, что это не полный ответ, но вот обходной путь: в Android Studio создайте очень простой «общий» проект java и запустите все, что вы хотите синхронизировать, например, константы, а также общие типы, которые вы хотите открыть (например, перечисление, представляющее все возможные коды возврата/ошибки и т. д.).

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

Пожалуйста, не стесняйтесь, если у кого есть предложения.

0

Это, к сожалению, Закон об информации (гм). Если у вас есть протокол сообщений, который вы определили, обе стороны взаимодействия должны знать сообщения, которые могут быть переданы. Другим способом для клиента не может быть известно, на что он должен реагировать. Ajax-библиотеки жестко кодируют число «200», чтобы иметь возможность обнаруживать успешный запрос, как один пример.

Да, просто используйте оператор switch для строк внутри вашего кода клиента. Или вы можете использовать словарь строк, указывающих на функции, и просто вызвать функцию после удаления ссылки на словарь с учетом полученной вами строки.

+0

должен быть способ выставить константу, которая скомпилирована в клиентскую библиотеку в результате компиляции бэкенда , что связь уже существует в форме конечных точек API - однако, похоже, он поддерживает только классы, я не вижу никаких технических ограничений, чтобы не выставлять константы. Я понимаю смысл? thx – Creos

+0

Немного. Я понимаю, что это «может быть сделано» с точки зрения встраивания этих константных строк/чисел внутри создаваемой клиентской библиотеки (или в случае JS-клиента, динамически созданного при вызове функции 'load()») Я не думаю, что это поможет вообще, и вот почему: константы нужно как-то решать. Какими будут имена переменных? – Nick

+0

имя, которое вы выбираете на бэкэнд, точно так же, как имя, которое вы выбираете для любого из многих классов в конечных точках. Эта связь значительно ниже, чем связь при кодировании VALUE константы. Если я хочу назвать что-то ОК_CODE в backend и назначить его «10», а tomorow решит переназначить его на «100» - да, мне нужно обновить бэкэнд и перекомпилировать интерфейс с ним, но это все равно. Мне не нужно действительно делать что-либо в передней части за пределами этого всегда необходимого шага. И если я решил переименовать OK_RESULT в RESULT_OK, я тоже безопасен. – Creos

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