Лучшие практики для передачи параметров из JavaScript (jQuery) в службу REST на основе Java? - PullRequest
1 голос
/ 26 ноября 2009

Я создал виджет на основе jQuery, который настроен примерно так:

jQuery("#foo").widget("service", {
    output : "test_output_field",
    parameters : {'format' : 'json',
                    'limit' : 20,
                    'services' : {'service1' : {},
                                'service2' : {'language' : 'en', 'type' : 'solid', 'parent' : 'father'},
                                'service3' : {'type' : 'big', 'strict' : 'true', 'filter' : 'all' }
                                }
    }
});

С такими параметрами, как «формат» и «лимит», легко работать; Я просто поместил их в строку запроса.

Проблема в настройке служб. Единственное, что является постоянным, - это то, что существует произвольное количество сервисов (здесь «service1-3») с переменным количеством параметров (специфических для определенного сервиса).

Я пытался настроить их в виде строки JSON, но парсеры, доступные для Java, в лучшем случае ужасны. Я мог бы разобрать конфигурацию в параметрах URL (например, & service2_language = en), но URL мог вырасти слишком длинным, чтобы его обрабатывать.

Что бы вы сделали?

Ответы [ 2 ]

0 голосов
/ 20 января 2010

Длинные URL-адреса с данными JSON в них действительно вызовут потенциальные проблемы (например, длина, экранирование и т. Д.), Поэтому вам действительно следует использовать метод POST с данными в теле. Я бы все еще сказал, что JSON - лучший выбор для сериализации, потому что он так изначально поддерживается в Javascript. Вы используете jQuery или Prototype для сериализации на стороне клиента?

YAML - еще один довольно простой вариант. Я использую snakeyaml для синтаксического анализа Java YAML, хотя в реализации Yaml также есть случайные расхождения.

0 голосов
/ 26 ноября 2009

парсеры [JSON], доступные для Java, в лучшем случае ужасны.

Почему-то мне трудно в это поверить. Какой парсер вы использовали и в чем была проблема?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...