Ir para conteúdo
  • Cadastre-se

dev botao

Implantação do JWT em API HORSE com SWAGGER


Ver Solução Respondido por BigWings,
  • Este tópico foi criado há 741 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Pessoal, estou começando a desenvolver uma API(Horse) e estou usando a estrutura do Swagger,

já consigo fazer o que preciso na parte de conexão com o banco, retornos, ec, mas tô me batendo para colocar a parte do JWT, estou estudando o projeto Kambana

e empaquei nessa parte: THorse.Get('/login', BasicAuthorization(), DoGetLogin); 

ele da erro dizendo que falta parâmetro.

Acredito que seja por conta da versão do Horse que estou usando a 3.0.1

eu tenho na minha estrutura de Login assim:

 type
   [SwagPath('usuario/token', 'Token')]   
   TLoginController = class
 private
     FRequest  : THorseRequest;
     FResponse : THorseResponse;
   public
     [SwagGET('Retornar o Token para acessar a API')]
     [SwagResponse(200, TLogin, 'Token', True)]
     procedure executaBasicLogin;
     constructor Create(Req: THorseRequest; Res : THorseresponse);
     destructor Destroy; override;
 end;
 

e aqui, nessa procedure preciso encaixar a autenticação,

mas sem chamar conforme o Kambana que faz assim: THorse.Get('/login', BasicAuthorization(), DoGetLogin); 

pois na classe já está embutida a parte do registro da rota com o Swagger.

a Procedure esta assim:

procedure TLoginController.executaBasicLogin;
begin

  //Horse.GET('/login', BasicAuthorization(), DoGetLogin);

THorse.Use('/token', BasicAuthorization(),DoGetLogin);

end;
 

mas acredito que teri que fazer de outra forma sem passar o "Path"(Apenas essa parte "BasicAuthorization(),DoGetLogin"

Alguém saberia me ajudar ?

 

Editado por Zottis
Erro de Escrita

Se quiser ir rápido, vá sozinho.
Se quiser ir longe, vá em grupo.
Provérbio Africano.

2023 ano XXVI

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Entra lá no grupo do discord ou telegram

https://discord.gg/FEAaCMjr

https://t.me/hashload

 

como assim sem o path? no caso a API terá que se virar a dizer onde será o end-point do token?

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Black-02.png
 

 

Link para o comentário
Compartilhar em outros sites

Oi Juliomar, obrigado pelo retorno, é que com o Swagger, pelo que entendi e está funcionando, já tem o endPoint

e quando cai na procedure "executaBasicLogin" que está na classe já é para executar os comandos.

 [SwagPath('usuario/token', 'Token')]   
   TLoginController = class
 private
     FRequest  : THorseRequest;
     FResponse : THorseResponse;
   public
     [SwagGET('Retornar o Token para acessar a API')]
     [SwagResponse(200, TLogin, 'Token', True)]
     procedure executaBasicLogin; 

Se quiser ir rápido, vá sozinho.
Se quiser ir longe, vá em grupo.
Provérbio Africano.

2023 ano XXVI

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Certo mas o que tem a ver o swagger com o end-point da api

ali ele só tá dando os endereços para a documentação e tu tem que informar para a api

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Black-02.png
 

 

Link para o comentário
Compartilhar em outros sites

nos testes que fiz, ele retorna o que pedi com os endPoints colocados dessa maneira,
mas mesmo tentando compilar conforme está no projeto Kambana, ele da erro

procedure TLoginController.executaBasicLogin;
begin
    THorse.Use('/token', BasicAuthorization(),DoGetLogin);
 end;
[dcc32 Error] Controller.Login.pas(100): E2034 Too many actual parameters

acredito que seja por conta da versão do horse, mas não consegui corrigir

 

Se quiser ir rápido, vá sozinho.
Se quiser ir longe, vá em grupo.
Provérbio Africano.

2023 ano XXVI

Link para o comentário
Compartilhar em outros sites

  • Moderadores
  • Solution
1 hora atrás, Zottis disse:

[dcc32 Error] Controller.Login.pas(100): E2034 Too many actual parameters

Está informando 3 parâmetros para um método que só aceita 2.

O Juliomar te passou o grupo deles no Telegram, é a forma mais rápida de conseguir ajuda.

Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

Link para o comentário
Compartilhar em outros sites

Obrigado BigWings, entrei lá, tanto no Instagran como no Discord, mas ninguém respondeu ainda.
"Está informando 3 parâmetros para um método que só aceita 2."

estou fazendo conforme o exemplo,

seguindo sua orientação, eu tirei um parâmetro, e compilou, mas agora fica a dúvida?
Como faço para ele redirecionar para a procedure  "
DoGetLogin"?

 

Se quiser ir rápido, vá sozinho.
Se quiser ir longe, vá em grupo.
Provérbio Africano.

2023 ano XXVI

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 741 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.