Aplicações REST/Web no iris-budget
iris-budget
Eu criei o aplicativo iris-budget para o InterSystems Full Stack Contest em 2026. Por full stack, queremos dizer uma aplicação web ou móvel de frontend que insere, atualiza ou exclui dados no InterSystems IRIS via REST API, Native API, ODBC/JDBC ou Embedded Python.
Meu aplicativo usa múltiplas REST APIs para adicionar uma nova categoria ou recuperar uma lista de categorias de despesas e receitas.
Primeira aplicação web /csp/coffee
Eu herdei /csp/coffee do module.xml no iris-fullstack-template.
Sergunda aplicação web /csp/budget
Para este projeto, criei um arquivo Swagger chamado "budget.json". Eu queria usar a abordagem spec first para desenvolver aplicações REST. No iris.script, usei as seguintes linhas para criar a classe Dispatch "budget.disp" assim como uma classe de implementação stub "budget.impl", utilizando a classe %Rest.API.
zn "IRISAPP"
Set file="/home/irisowner/irisbuild/swagger/budget.json"
Set obj = ##class(%DynamicAbstractObject).%FromJSONFile(file)
Do ##class(%REST.API).CreateApplication("budget",.obj,,.new,.error)
Para carregar meu código de implementação atualizado, uso a seguinte linha no iris.script:
Do $System.OBJ.Load("/home/irisowner/irisbuild/src/cls/budget/impl.cls","ck")
Terceira aplicação web /csp/rest
Adicionei outra aplicação web no module.xml porque queria ter controle sobre minha classe Dispatch quando quisesse fazer chamadas REST do app Streamlit para o backend IRIS.
Codifiquei manualmente a classe Dispatch "rest.dispatch". Eu queria enviar uma chave de API ou token do app Streamlit para fins de autenticação. Tentei chamar o código de "login" durante o OnPreDispatch, mas continuava recebendo erros.
Adicionei uma role de aplicação à aplicação web para dar permissão de acesso ao banco de dados, permitindo retornar os dados das listas de categorias de despesas e receitas.
Quarta aplicação web /rest/budget
Tentei utilizar o isc-rest. Tive problemas para satisfazer uma dependência dele. Vi no Open Exchange que havia sido detectado um problema. Usei a segunda e a terceira aplicações web em seu lugar.