Artigo
· 4 hr atrás 3min de leitura

Construindo a Interface por Prompting vs Backend InterSystems IRIS: Lovable, Spec First e REST API

Olá, desenvolvedores!

Observando a avalanche de ferramentas para desenvolvedores movidas por IA e baseadas em vibe-coding que vêm surgindo quase todo mês, com recursos cada vez mais interessantes, eu fiquei me perguntando se seria possível aproveitá-las com o InterSystems IRIS. Pelo menos para construir um frontend. E a resposta é: sim! Pelo menos com a abordagem que eu segui.

Aqui está minha receita para construir a interface via prompting conectada ao backend IRIS:

  1. Tenha uma REST API no lado do IRIS, que siga uma especificação Open API (swagger).
  2. Gere a interface com alguma ferramenta de vibe-coding (por exemplo, Lovable) e aponte essa interface para o endpoint da REST API.
  3. Pronto!

Aqui está o resultado do meu próprio exercício — uma interface 100% criada via prompt conectada a uma REST API IRIS, que permite listar, criar, atualizar e excluir registros de uma classe persistente (Open Exchange, código do frontend, vídeo):

Qual é a receita em detalhes?

Como obter a especificação Open API (Swagger) a partir do backend IRIS

Peguei o template com a classe persistente dc.Person, que contém alguns campos simples: Nome, Sobrenome, Empresa, Idade, etc.

Achei que o ChatGPT poderia gerar a especificação Swagger, mas talvez fosse tímido para fazer isso com ObjectScript (embora talvez consiga agora). Então, gerei o DDL da classe pelo terminal do IRIS:

Do $SYSTEM.SQL.Schema.ExportDDL("dc_Sample","*","/home/irisowner/dev/data/ddl.sql")

E passei esse DDL para o ChatGPT junto com o seguinte prompt:

Por favor, crie uma especificação Open API no formato JSON versão 2.0 a partir do seguinte DDL, que permita obter todos os registros e registros individuais, além de criar, atualizar e excluir entradas. Adicione também um endpoint _spec com OperationId GetSpec. Por favor, atribua nomes significativos para todos os operationId dos endpoints. O DDL: CREATE TABLE dc_Sample.Person( %PUBLICROWID, Company VARCHAR(50), DOB DATE, Name VARCHAR(-1), Phone VARCHAR(-1), Title VARCHAR(50) ) GO CREATE INDEX DOBIndex ON dc_Sample.Person(DOB) GO

E funcionou muito bem — aqui está o resultado.

Depois disso, usei a ferramenta de linha de comando %REST para gerar as classes backend.

Em seguida, implementei a lógica da API REST no IRIS usando ObjectScript para os métodos GET, PUT, POST e DELETE. Na maior parte, manualmente 😉, com alguma ajuda do Co-pilot no VSCode.

Testei a REST API manualmente com o swagger-ui e, depois que tudo estava funcionando, fui construir a interface:

A interface foi criada usando a ferramenta Lovable.dev via prompt:

Por favor, crie uma interface moderna e prática a partir da seguinte especificação Open API, que permita listar, criar, atualizar e excluir pessoas { "swagger":"2.0", "info":{ "title":"Person API," "version":"1.0.0" }, ....(passei a especificação completa)

Depois que a interface foi construída e testada (manualmente), pedi para o Lovable direcioná-la para o endpoint da REST API no IRIS. Primeiro localmente via Docker, e depois de alguns testes e correções (também via prompts), o resultado foi publicado.

Algumas observações e lições aprendidas

  • A segurança da REST API no lado do IRIS não é muito clara de início (principalmente por questões relacionadas ao CORS). Por exemplo, precisei adicionar uma classe especial cors.cls e modificar manualmente a especificação do Swagger para que o CORS funcionasse.
  • A documentação Swagger não funciona automaticamente em containers Docker no IRIS, mas isso pode ser resolvido adicionando um endpoint _spec e algumas linhas de código em ObjectScript.
  • A especificação Swagger para IRIS deve ser na versão 2.0, e não na mais recente 3.1.

Fora isso, essa abordagem se mostrou uma forma bastante eficiente para um desenvolvedor backend IRIS construir protótipos de aplicações full-stack completos em muito pouco tempo, mesmo sem conhecimento de frontend.

Compartilhe sua opinião. Qual é a sua experiência com vibe-coding no desenvolvimento com IRIS?

Aqui está o vídeo demonstrativo:

https://www.youtube.com/embed/Oo4OBfTf4d4
[Isso é um link incorporado, mas você não pode ver conteúdo incorporado diretamente no site, porque recusou os cookies necessários para acessá-lo. Para ver o conteúdo incorporado, você precisa aceitar todos os cookies nas suas Definições de cookies]

Discussão (0)1
Entre ou crie uma conta para continuar