Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Permitir passar objetos direto no método da rota #27

Open
arvanus opened this issue Mar 29, 2023 · 1 comment
Open

Permitir passar objetos direto no método da rota #27

arvanus opened this issue Mar 29, 2023 · 1 comment

Comments

@arvanus
Copy link
Contributor

arvanus commented Mar 29, 2023

Seria muito interessante adicionar um recurso via RTTI para facilitar a recepção dos dados das rotas, algo +- assim:

    [SwagGET('{id}', 'Find User')]
    [SwagParamPath('id', 'user id')]
    [SwagResponse(200, TUser, 'User data')]
    [SwagResponse(404)]
    procedure FindUser(id:String);//aqui poderia aceitar qualquer tipo primitivo, além de objetos serializáveis
    //Ou ainda: 
   function FindUser(id:String):TUser;//aqui o próprio gbswagger pode gerar o retorno via TJson.ObjectToJSON

    [SwagPOST('Insert a new user')]
    [SwagParamBody('UserData', TUser)]
    [SwagResponse(201, TUser)]
    [SwagResponse(400)]
    procedure InsertUser(UserData:TUser); 

O gbswagger ficaria uma mínima coisa mais lento para verificar se o método da rota aceita parâmetros,
Se aceitar um objeto anotado é só uma questão de criar o objeto via RTTI, popular ele via TJson.JsonToObject(self, json, AOptions) da unit REST.JsonReflect
Se ele pedir um tipo primitivo é muito mais simples.
A única regra é a mesma de outros frameworks, o nome do parâmetro deve ser o mesmo da anotação SwagParamBody e SwagParamPath

No momento não tenho necessidade deste recurso, mas se tivermos uma boa discussão sobre ele, se for útil e mais gente ter interesse posso ajudar a implementar

@gabrielbaltazar
Copy link
Owner

Bom dia amigo... é um recurso interessante com alguns receios que tenho de fazer processamento de RTTI desnecessário, principalmente quando o método não tiver parâmetros.
Porém aceito sugestões de implementação.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants