RESTful веб-сервис с неизвестным количеством параметров - PullRequest
1 голос
/ 03 ноября 2011

Я пишу веб-сервис RESTful, использующий Java, который должен принимать как (POST) ввод неизвестного числа имени параметра, пары значений. Я думаю, что это лучший способ достичь этого.

POST-вводом будет JSON с ожидаемым форматом:

{"input" :
  { "x" = 1, "y"="Hello, "z"="1.2.3.4",... }
}

Ожидается, что значения параметров будут представлять собой сочетание int / long / float / string и т. Д. Ожидаемое поведение - сохранить эти входные данные в БД и предоставить их обратно по запросу. Сложность в том, что имена параметров неизвестны, я не могу написать методы getter и setter. Есть ли простой способ справиться с этим?

Будем очень благодарны за любые указатели в правильном направлении. Могу ли я прочитать это как список? Нужно ли писать Custom MessageBodyReaders? Есть ли другой способ достичь этого? Единственный вариант, о котором я могу подумать, - это отправить их в виде файла и проанализировать его, но я надеюсь, что есть более простые / более чистые решения. Спасибо за любые ссылки ...

1 Ответ

1 голос
/ 04 ноября 2011

Если все, что вам нужно сделать, это сохранить его и сделать его доступным по запросу, зачем вообще его анализировать? Просто запишите json как строку в вашу базу данных и верните ее в виде строки, задав тип ответа «application / json». Единственное предостережение: вам нужно будет каким-то образом определить, какую строку json вы хотите, и связать уникальный идентификатор, который вы сможете определить, когда будете запрашивать конкретную строку json в будущем.

Здесь стоит отметить, что когда вы что-то не анализируете, вы на самом деле не знаете, что это такое. Несмотря на то, что многие современные библиотеки / фреймворки уже очищают от SQL-инъекций / xss, стоит проверить, что это делается на вашем сервере, если вы еще не знаете точно.

При этом, если вы все еще чувствуете, что вам нужно разобрать JSON, я бы посмотрел в gson: http://code.google.com/p/google-gson/

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