2016-01-07 2 views
1

У меня очень сложная форма. Мне нужно получить параметры сообщения из этой формы в том порядке, в котором они были отправлены. Приложение создано в ring/compojure.Clojure/Ring как получить параметры для отправки в заказе

Все параметры, которые я могу получить из запроса кольца предварительно обрабатываются (сгруппированных, отсортированные ..)

Как получить список параметров сырец (предпочтительно разобранную ключевой вектор/значение или какой-либо другой список)?

ответ

1

Не могли бы вы предоставить более подробную информацию о своем проекте. Какой HTTP-сервер вы используете (http-kit, clj-http, aleph) и какое промежуточное программное обеспечение вы применяете в своем проекте?

Все параметры основаны вещи на самом деле не является частью кольца спецификации, но обрабатываются промежуточного слоя (см https://github.com/ring-clojure/ring/wiki/Parameters), так что это в значительной степени зависит от того, какие биты вы в настоящее время втягивая.

Я не известно о любом промежуточном программном обеспечении кольца, которое в настоящее время существует, которое вам нужно, все они, похоже, разбирают список параметров и помещают его в хэш-карту, и если существует несколько параметров с одним и тем же именем ключа, они делают значение в хэш-карте вектором Предметы.

Что все сказано, я должен спросить. Почему вам нужны они в определенном порядке?

+0

Я пришел к такому же выводу, что мне придется реализовать свое собственное промежуточное ПО, но потом я заметил, что тело http не является безгражданством и уже было прочитано другим программным обеспечением промежуточного программного обеспечения .. вздох. Есть решения для этого, но в конце концов я думаю, что в конечном итоге создаю какое-то другое решение, которое включает в себя сложную схему именования параметров вместо использования порядка (древовидного порядка), который передают параметры. – mikkom

+0

И о причине, форма представляет собой вид редактируемой динамической древовидной структуры с известными именами параметров, поэтому мне нужны параметры по порядку. В противном случае я должен указать параметры на основе некоторой схемы id, и это сложнее, чем разбор дерева из упорядоченного списка. – mikkom

1

Ваш лучший вариант - создать свое собственное промежуточное программное обеспечение. В качестве руководства используйте промежуточное ПО wrap-param. Вам просто нужно сделать свой заказ на https://github.com/mmcgrana/ring/blob/master/ring-core/src/ring/middleware/params.clj#L29

Сказанное также, я также опасаюсь ожидать параметров в определенном порядке, так как это сделает хрупкое взаимодействие клиент-сервер.

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