Здравствуйте! Подскажите, пожалуйста, ЧЯДНТ ?...:
Решил попробовать на базе этого проекта:
https://github.com/seancorfield/clj-soapсделать свой какой-нибудь тестовый, демо SOAP-сервис и в принципе получилось его собрать, запустить и немного потестить, но что-то никак не соображу как можно сделать так, чтобы метод сервиса принимал именно именованные аргументы/параметры:
базовый пример такой (без инфраструктурной обвязки):
(require '[clj-soap.core :as soap])
;; Defining service class
(soap/defservice my.some.SoapClass
(someMethod ^String [^Integer x ^String s]
(str "x is " x "\ts is " s)))
;; Start SOAP Service
(serve "my.some.SoapClass")
Попробовал написать так, но почему-то не срабатывает, хотя и exception'ами не бросается:
;; Defining service class
(soap/defservice my.some.SoapClass
; TODO: FIX ARGS/PARAMS!!! (Named params/args doesn't work for some reason!)
(someMethod ^String [& rest] (let [{:keys [key1 key2 key3] :or {key3 10}} (apply hash-map rest)]
(str "key1 is " key1 "\tkey2 is " key2 "key3 is " key3))))
или это мне нужно лезть в код самого фреймворка, чтобы понять как это сделать (может там ограничения какие-то есть на это) ?
(P.S.: залезал в код фреймворка: и то ли плохо смотрел, то ли ещё где-то знаний не хватает... в общем пока не разобрался...)
Буду очень признателен если подскажете как лучше сделать?
Или может есть какой-то другой фреймворк получше?