Root.Js: как передать параметры на THttpServer?

avatar
LeifSec
9 августа 2021 в 06:40
50
2
0

Я использую root.js и запрашиваю фиксированный TH2I через JavaScript

<script type='text/javascript'>
    var histo;
    JSROOT.httpRequest("https://subdomain.doamin.xx/root/Objects/subfolder/histo/root.json", 'object')
            .then(obj => { 
      histo = JSROOT.parse(obj);
      histo.fName = "2D";
      JSROOT.redraw('object_draw', histo, "lego2");
      console.log(obj)
    })
  </script>

В бэкенде я делаю (на Python):

serv = ROOT.THttpServer("http:8080")
serv.CreateServerThread()
histo = ROOT.TH2I('h1', '', 320, 0, 320, 320, 0, 320)
histo.SetName("histo")
histo.SetBinContent(40, 50, 5)
serv.Register("subfolder", histo)

Теперь я хочу передать параметры в THttpServer для создания динамических гистограмм, например. анализируя имя файла (не корневого) файла данных в качестве источника данных. В документации от THttpServer::RegisterCommand() указаны параметры, соответствующие тому, что я сделал:

hpx = Hpx()
serv.RegisterCommand('/test', '/hpx/.notify(arg1%,\'arg2%\')')

где Hpx — некоторый класс, предоставляющий функцию notify с двумя параметрами. Я попытался позвонить по

https://subdomain.doamin.xx/root/Objects/test/root.json?arg1=1&arg2=2

Но Hpx::notify не звонят.

Существует также тип post_data в JSROOT.httpRequest, но тогда THttpServer не должен возвращать (JSon) данные.

Источник

Ответы (2)

avatar
LeifSec
16 сентября 2021 в 12:20
0

См. КОРНЕВОЙ форум.

self.__serv.RegisterCommand('/Folder/Start', TPython::Exec("do_something(\'%arg1%\')")')  # for strings
self.__serv.RegisterCommand('/Folder/Start', 'TPython::Exec("do_something(%arg1%)")') # for integers / floats

def do somethings(arg1) должен быть вне класса.

avatar
Sergey Linev
15 сентября 2021 в 11:16
1

Следует использовать запрос cmd.json. root.json возвращает JSON-представление запрошенного объекта.

Более подробную информацию можно найти в документации THttpServer

В будущем - пожалуйста, отправьте вопрос о структуре ROOT на форум ROOT.