Artigo
· Nov. 19, 2021 2min de leitura

Como gerar especificação Swagger a partir de classes persistentes e seriais

Recentemente eu precisei gerar uma especificação Swagger a partir de classes persistentes e seriais, então estou publicando meu código (ainda incompleto - você ainda precisa  resolver detalhes específicos do aplicativo mas é um começo). Ele está disponível aqui.

Digamos que você tem estas classes:

 
Classes

Você pode gerar esta definição Swagger automaticamente a partir delas:

 REST.Test.Person:
   type: "object"
   properties:
     Age:
       type: "integer"
     DOB:
       type: "string"
     FavoriteColors:
       type: "array"
       items:
         type: "string"
     FavoriteNumbers:
       type: "object"
     Home:
       $ref: "#/definitions/REST.Test.Address"
     Name:
       type: "string"
     Office:
       $ref: "#/definitions/REST.Test.Address"
     SSN:
       type: "string"
     Spouse:
       $ref: "#/definitions/REST.Test.Person"
 REST.Test.Address:
   type: "object"
   properties:
     City:
       type: "string"
     State:
       type: "string"
     Street:
       type: "string"
     Zip:
       type: "string"

Método principal:Utils.YAML:GenerateClasses

Teste: do ##class(Utils.YAML).Test()

Discussão (2)3
Entre ou crie uma conta para continuar

@Rochael Ribeiro 
já olhei sim. A abordagem é um pouco diferente porque o projeto apiPub automatiza a publicação com base nos métodos e na sua assinatura (parâmetros). Caso estes parâmetros sejam tipos complexos (objeto por exemplo), ele cuida da publicação de todas as suas propriedades e as expõe automaticamente.