Model-R / Front-end

Interface web do Model-R
Other
0 stars 0 forks source link

Método no webservice para informar resultados de modelagem #5

Open gmgall opened 7 years ago

gmgall commented 7 years ago

Assim como temos um método no webservice para mudarmos o status de um experimento (de Liberado para Em processamento por exemplo), sugiro criarmos um para informarmos os resultados de um experimento.

Ele pode receber as informaçes via HTTP POST:

idexperiment: a684eceee76fc522773286a895bc8436
kappa: 0.09080909
algoritmo: BioClim
partition: 3
raster_path: http://buriti.lncc.br/modelr_demo/a684eceee76fc522773286a895bc8436/Zygia%20latifolia%20(L.)%20Fawc.%20&%20Rendle/BioClim_cont_Zygia%20latifolia%20(L.)%20Fawc.%20&%20Rendle_3.tif

Processar os dados de uma requisição POST não é complicado no PHP se me recordo corretamente. Só não saberia exatamente se é o melhor método HTTP para fazermos isso (semanticamente falando).

Estão faltando vários campos acima e raster_path poderia ser relativo. Estou passando um exemplo absoluto só para expor a ideia.

gmgall commented 6 years ago

Agora parece que todos os métodos retornam um JSON válido.

>>> import requests
>>> payload = {'id': 'bd4c9ab730f5513206b999ec0d90d1fb', 'idresulttype': '102', 'op': 'I', 'partition': 4, 'algorithm': 'BioClim', 'kappa': 1111, 'spec_sens': 2222, 'no_omission': 3333, 'prevalence': 4444, 'equal_sens_spec': 5555, 'sensitivity': 6666, 'auc': 7777, 'tss': 8888, 'tiff_path': 'BioClim_bin_Eugenia florida DC._1.tif', 'png_path': 'BioclimEugenia florida DC._2001.png', 'raster_png_path': ''}
>>> r = requests.post('https://model-r.jbrj.gov.br/ws/setresult.php', data=payload)
>>> r.status_code
200
>>> r.json()
{'experiment': [{'id': 'bd4c9ab730f5513206b999ec0d90d1fb', 'op': 'I', 'msg': 'Adicionado com sucesso'}]}

Pretendo escrever uma documentação técnica do Model-R que incluirá uma descrição do web service, até para minha própria referência. Eu entro em contato para tirar as dúvidas que ficarem.

antunesmg commented 6 years ago

Perfeito Guilherme. Qualquer dúvida pode entrar em contato comigo.