Consumindo REST API com Spring WebClient

แชร์
ฝัง
  • เผยแพร่เมื่อ 19 ธ.ค. 2024

ความคิดเห็น • 103

  • @lucasgonzaga8736
    @lucasgonzaga8736 ปีที่แล้ว

    o william me salvando mesmo depois de eu sair do projeto kkkkkkk valeu mano é noiss

  • @josemariacostateixeira9301
    @josemariacostateixeira9301 2 ปีที่แล้ว +2

    Parabéns! Muito bem explicado.

  • @gustassifon
    @gustassifon 3 ปีที่แล้ว +10

    Excelente. Para complementar, acho que poderiam fazer um video explicando como usar o WebClient com uma API que espera autenticação, ou será que já existe?

  • @jonathannto
    @jonathannto ปีที่แล้ว

    Bom D+ só queria saber como consumir uma API externa e o vídeo faz isso e ainda ensina muito mais.

  • @luizc.jr.2064
    @luizc.jr.2064 2 ปีที่แล้ว +1

    Cara tu é fera demais!! Valeu

  • @waldirescoutopereira9986
    @waldirescoutopereira9986 2 ปีที่แล้ว

    Mais um vídeo top, parabéns!!! , eu gostaria de ver geração de arquivo csv

  • @aqueleestevao
    @aqueleestevao 4 ปีที่แล้ว +23

    Parabéns, esses vídeos estão muito bons 🎉 sugestão, falem sobre Flux!

    • @algaworks
      @algaworks  4 ปีที่แล้ว +5

      Opa, obrigado de verdade Estevão! Pode deixar, que já está anotado sua sugestão!

  • @RonaldoHabibiDev
    @RonaldoHabibiDev 3 ปีที่แล้ว +3

    Sim! Vamos comparar os 2 recursos RESTtemplate x WebClient!!!
    Grande @William, muito obrigado, belo video. #SpringWebClient me parece que ficou bem bom.

  • @brunodev5624
    @brunodev5624 2 ปีที่แล้ว

    Muito obrigado pelo vídeo!! Super esclarecedor e bem explicado.

  • @aldecirdsantos
    @aldecirdsantos 3 ปีที่แล้ว

    Merece no 1000 professor!!!

  • @juninho3818
    @juninho3818 2 ปีที่แล้ว

    excelente conteúdo!!!

  • @JeffersonLuizCruz
    @JeffersonLuizCruz 4 ปีที่แล้ว +2

    Cabeludo você deu show de aula rapaz. Parabéns!

  • @GustavoGAvila
    @GustavoGAvila 3 ปีที่แล้ว +1

    Valeu, William! Conteúdo nota 1.000! Parabéns e muito obrigado!

  • @danilocosta6495
    @danilocosta6495 ปีที่แล้ว

    Vídeo 100%. Ajudou de mais.

  • @mpdarocha
    @mpdarocha 3 ปีที่แล้ว +1

    Parabens, excelente vídeo, você tem algum vídeo sobre padrão Saga para micro services ?

  • @paulocezarmarques3320
    @paulocezarmarques3320 3 ปีที่แล้ว +1

    Parabéns, ótimo vídeo! Gostaria muito de ver um vídeo sobre consumo de web service SOAP.

  • @ricardojohannsen374
    @ricardojohannsen374 2 ปีที่แล้ว +2

    aula fantástica. poderia ter um vídeo desses falando sobre o spring reativo Mono e Flux sendo utilizados nos controllers e services

  • @jonatasalmeida4196
    @jonatasalmeida4196 4 ปีที่แล้ว +1

    Muito show a explicação, só senti falta do get com bodyToFlux, que é usado quando o retorno é uma lista de objetos, nesse caso, o block é meio diferente né, ainda não entendi como usar o o blockFirst ou blockLast...

  • @gustavopasso1
    @gustavopasso1 4 ปีที่แล้ว

    Show Willian exatamente o que estava procurando.

  • @MichaelSSantos
    @MichaelSSantos 4 ปีที่แล้ว +1

    Gostaria de sugerir a publicação de um vídeo sobre o consumo de web services SOAP usando o Spring Boot. Após uma pesquisa no TH-cam, não encontrei vídeos nacionais de qualidade que pudessem orientar bem sobre o consumo de web services SOAP usando o Spring Boot. Por isso, acho que seria interessante a Algaworks publicar um vídeo sobre este tema. Entendo que o foco hoje em dia é o consumo e produção de serviços que utilizam a arquitetura REST. No entanto, ainda existem muitos sistemas legados que expõem web services SOAP. Seria interessante para os dois lados. Os alunos que iriam expandir os conhecimentos sobre o assunto e a Algaworks que seria o único canal a publicar um vídeo de qualidade sobre o tema em questão.
    Sou aluno de vocês em vários cursos, como o Especialista Spring Rest, Spring Framework Expert e Especialista JPA. Gosto muito dos vídeos produzidos pela Algaworks, porque vocês realmente possuem didática e produzem conteúdo com qualidade. Muito obrigado.

  • @jefferson7chaves
    @jefferson7chaves 3 ปีที่แล้ว

    O conteúdo da Algaworks é muito bom! Parabéns pelo trabalho!

  • @heliolima3742
    @heliolima3742 4 ปีที่แล้ว

    Parabéns pelo conteúdo do vídeo.
    Confesso que pensei que ia funcionar a requisição em paralelo quando colocou a chamada aos dois métodos block juntas e ao final do método.
    Se tivesse funcionado, para mim estaria fazendo sentido.
    Estranhei a sintaxy com o zip.

  • @wallacelima7673
    @wallacelima7673 4 ปีที่แล้ว +2

    Ótimo conteúdo com didática excelente! Por mais vídeos assim. Obrigado!!

    • @algaworks
      @algaworks  4 ปีที่แล้ว

      Poxa, muito obrigado Wallace! Fico feliz que tenha gostado.
      Vamos sempre nos esforçar para entregar bons conteúdos pra vocês :D

  • @igorsouza7758
    @igorsouza7758 4 ปีที่แล้ว +1

    Aula top. Muito obrigado por compartilhar seu conhecimento.

  • @montivaljunior1221
    @montivaljunior1221 4 ปีที่แล้ว +1

    Top demais. Muito bom, obrigado pelo vídeo!

  • @josemarioramos2009
    @josemarioramos2009 2 ปีที่แล้ว

    opa... tudo contéudo muito bom... seria possivel tratar sobre a programação reativa e o projeto reactor?

    • @algaworks
      @algaworks  2 ปีที่แล้ว

      Olá mergulhador!
      Já está na nossa lista de estudos, continue nos sugerindo novos assuntos!

  • @leandrosantiago7303
    @leandrosantiago7303 4 ปีที่แล้ว

    Nota 10. Show de aula

  • @jeffersondlopes01
    @jeffersondlopes01 4 ปีที่แล้ว

    Caraba muito bom... FAÇA O VIDEO DAS DIFERENÇAS SIM... ajudaria muito

    • @algaworks
      @algaworks  4 ปีที่แล้ว

      Opa, que bom que gostou Jefferson!
      Beleza, vou fazer esse vídeo!

  • @GustavoHenrique-in2mt
    @GustavoHenrique-in2mt 3 ปีที่แล้ว

    Aula top! muito obrigado

  • @Shiryu147
    @Shiryu147 4 ปีที่แล้ว

    Um vídeo mostrando as diferenças seria sensacional

    • @algaworks
      @algaworks  4 ปีที่แล้ว

      Pode deixar que vou providenciar, já está anotado!

  • @xptotable
    @xptotable 3 ปีที่แล้ว

    Excelente conteúdo e ótima didática. Parabéns!

  • @pedroquedalivre
    @pedroquedalivre 4 ปีที่แล้ว

    Valeu Willian!! obrigado por compartilhar o conhecimento. Muito bom o vídeo. Parabéns!!

    • @algaworks
      @algaworks  4 ปีที่แล้ว

      Poxa, muito obrigado mesmo Antonio! :D

  • @brunosantossilva848
    @brunosantossilva848 2 ปีที่แล้ว

    Eu consigo usar esse mesma ideia para consumir uma api SOAP? Se puder fazer um video consumindo uma api SOAP com springboot seria bacana.

  • @rubenszuliani7612
    @rubenszuliani7612 4 ปีที่แล้ว +1

    Muito bom o video, gostaria de saber, no cenario onde um dos end-points falha, como o Mono faz o tratamento, ou e apenas lancada uma exception.

    • @algaworks
      @algaworks  4 ปีที่แล้ว +5

      Olá Rubens! Muito obrigado!
      No cenário síncrono, onde a chamada é bloqueante, você poderia simplesmente utilizar um try/catch, já em um modo assíncrono, tem outras formas de se fazer esse tratamento.
      Estou pensando em fazer um vídeo sobre isso, o que você acha?

    • @rubenszuliani7612
      @rubenszuliani7612 4 ปีที่แล้ว

      @@algaworks Adoraria ver esse video =)

    • @ThiagoGomes19
      @ThiagoGomes19 4 ปีที่แล้ว

      @@algaworks Seria muito bom =D

    • @matheusmacedo3490
      @matheusmacedo3490 2 ปีที่แล้ว

      @@algaworks Esse vídeo seria muito legal em?!

  • @Renato-no6kw
    @Renato-no6kw 3 ปีที่แล้ว +1

    Faz de como se comunicar em cima do protocolo https...por favor.

  • @lagoawb
    @lagoawb 3 ปีที่แล้ว

    Excelente aula, sua didatica e muito boa, as aulas de docker sao tops.
    voce poderida fazer uma sequencia de aulas falando sobre microservice
    parabens pelo sucesso

  • @domingosgilubisse9606
    @domingosgilubisse9606 4 ปีที่แล้ว +1

    Conteúdo muito valioso

    • @algaworks
      @algaworks  4 ปีที่แล้ว +1

      Poxa, muito obrigado Domingos. Ficamos muito felizes em saber que tenha gostado. :D

  • @andersonpauladasilva
    @andersonpauladasilva 4 ปีที่แล้ว

    Olá! parabéns!!! Achei o vídeo super excelente! Porém gostaria de ter visto as demais operações também sendo implementadas. Fica como sugestão para um próximo exemplo, a implementação das demais operações e uma discussão referente a esta arquitetura de Webclient em relação a arquitetura tradicional de implementação de Microsserviços.

    • @algaworks
      @algaworks  4 ปีที่แล้ว +1

      Olá Anderson! Valeu mesmo!
      Quando você se refere as demais operações, está falando dos verbos HTTP? Por exemplo, POST, PUT, DELETE, etc.?
      Já está anotado como sugestão, muito obrigado!

    • @andersonpauladasilva
      @andersonpauladasilva 4 ปีที่แล้ว

      @@algaworks Opa. Obrigado, me refiro aos demais verbos HTTP sim. Parabéns!!! Att

  • @Fonetico13
    @Fonetico13 3 ปีที่แล้ว

    Que video sensacional! Ótima explicação. Estou precisando implementar algo parecido no meu trabalho e foi de extrema ajuda

  • @davidleite1368
    @davidleite1368 2 ปีที่แล้ว

    Parabéns, muito bom, agora estou com uma duvida, caso eu em um método post, eu não queira obter o response, somente enviar a requisição, teria como eu verificar caso ocorresse algum error ?

    • @algaworks
      @algaworks  2 ปีที่แล้ว

      Olá mergulhador!
      Caso o seu código for sincrono como mostrado na aula, você pode utilizar o "onStatus" após o retrieve() e lançar uma Exception.
      .onStatus(httpStatus -> httpStatus.value() == 500, error -> Mono.error(new RuntimeException("error")))

  • @diegoevaldtsilveira9778
    @diegoevaldtsilveira9778 4 ปีที่แล้ว

    Parabéns pela video aula show! Estava pesando nessa demonstração consumindo a api externa igual foi feito no exemplo mas salvar no banco de dados como ficaria?

  • @vm3f
    @vm3f 4 ปีที่แล้ว

    Excelente aula. Como mencionaste no inicio do vídeo, seria interessante um vídeo abordando as diferenças entre Spring mvc e Spring boot. Com sua didática isso ficaria brilhante. Abraço, fique bem.

    • @algaworks
      @algaworks  4 ปีที่แล้ว

      Olá Vilson!
      Poxa, que massa, fico muito feliz que tenha gostado. Pode deixar então que vou preparar esse vídeo sobre as diferenças!

  • @charlesmuller7871
    @charlesmuller7871 3 ปีที่แล้ว

    Ótimo vídeo, me ajudou muito, poderia me dar uma dica? como funciona os relacionamentos ManyToOne e OneToMany com o webclient? Valeu!

  • @luismiguel8059
    @luismiguel8059 3 ปีที่แล้ว

    Em relação às portas, é um tanto quanto incômodo criar vários Beans que só mudam a porta. Ao meu ver, uma solução melhor seria criar um gateway como o Zuul do Sprinig Cloud para rotear de forma automática. Aliás, parabéns pelo vídeo, agregou muito conhecimento!

  • @josienevieira6122
    @josienevieira6122 4 ปีที่แล้ว

    Ótimo vídeo, valeu mesmo.
    Estava testando uma uri e deu erro de redirecionamento, código 301, como tratar isso? No postman essa mesma uri funciona normalmente.

  • @dowglasmaia-dev
    @dowglasmaia-dev 4 ปีที่แล้ว

    Excelente Conteudo , muito bem explicado. tentei fazer um teste para receber uma lista e não conseguir ate o momento deste comentario, como seria no caso, para ter um retorno de uma Lista de Objetos no Mono ? Obrigado.

  • @fernandosantos-zq3ju
    @fernandosantos-zq3ju ปีที่แล้ว

    Muito bom !!!

  • @humbertinho2010
    @humbertinho2010 2 ปีที่แล้ว

    Muito bom o conteúdo, só fiquei com uma dúvida... Vi que só está sendo retornado um objeto pela classe Mono, mas e se eu quiser retornar uma lista por exemplo?

    • @algaworks
      @algaworks  2 ปีที่แล้ว

      O Mono pode conter uma lista dentro dele, mas caso queria utilizar tudo reativo, você pode utilizar o Flux. Acontece que o Flux só será útil caso a API que você consome também for reativa.

  • @GillsongBR
    @GillsongBR 3 ปีที่แล้ว

    Problemas com block()? Deixa o seu pom.xml compatível com a do repositório do projeto 'consume'

  • @fernandohiar9985
    @fernandohiar9985 ปีที่แล้ว

    Uma dúvida, eu conseguiria ter diferentes retornos de objetos, com status code diferentes?

  • @antonioemanuel
    @antonioemanuel ปีที่แล้ว

    muito bom!

  • @TerapiaDev
    @TerapiaDev 3 ปีที่แล้ว

    Muito bom, obrigado!!!!

  • @rodrigoribeiro7261
    @rodrigoribeiro7261 4 ปีที่แล้ว

    Pra quem está com erro no block(), use a versão 11 pra cima do java, apanhei um fds pq estava na versão 8, ainda bem que li o comentário do @Emanuel Paiva Medeiros

  • @carloscazelattojr
    @carloscazelattojr 2 ปีที่แล้ว

    Opa blz! como eu faria para retornar uma lista de produtos ?
    o Mono traz um produto e para trazer uma Lista ?

  • @klonymarcos
    @klonymarcos 2 ปีที่แล้ว

    Olá ótimo video, tentei implementar mas com uma API que não é bloqueante e retorna o erro "block()/blockFirst()/blockLast() are blocking, which is not supported in thread reactor-http-epoll-3"
    para estes casos o que poderia fazer para recuperar o objeto?

  • @estevaomanhique6421
    @estevaomanhique6421 2 ปีที่แล้ว

    Paz! Qui tal. Esse conteudo esta actualizado para 2022?

    • @algaworks
      @algaworks  2 ปีที่แล้ว

      Olá Estevao, você teve alguma dificuldade específica?

  • @giltonnascimento2758
    @giltonnascimento2758 4 ปีที่แล้ว

    Achei bem interessante o assunto, parabéns pelo conteúdo!! Espero que tenham mais com assunto relacionado.
    Uma pergunta, caso eu quisesse exibir o resultado não apenas em JSON, mas também em um outro formato como XML ou CSV, como ficaria o header, eu simplesmente adicionar um outro header ou teria que criar um outro @bean?

  • @cristianrobert6351
    @cristianrobert6351 3 ปีที่แล้ว +1

    E se não for um projeto "spring boot"? E se for um projeto com spring 3... por exemplo ?

  • @eryckavelino1378
    @eryckavelino1378 ปีที่แล้ว

    Esse metodo ainda e viavel nos dias de hj? quero aplicar em projetos e queria saber para aplicar em um projeto empresarial, e queria saber se e viavel.

    • @algaworks
      @algaworks  ปีที่แล้ว

      Olá mergulhador! O Webclient ainda é atual e está sendo atualizado até os dias de hoje. O client http do Spring que não está mais recebendo atualizações é o RestTemplate.

    • @eryckavelino1378
      @eryckavelino1378 ปีที่แล้ว

      @@algaworks Haaaa duvida, em meus teste que vi em outros videos usam o build inves do create, qual a diferença?

  • @lobsom
    @lobsom 3 ปีที่แล้ว

    E-X-C-E-L-E-N-T-E-!!!

  • @LucasIorio
    @LucasIorio 2 ปีที่แล้ว

    Usei webclient para uma aplicação com 600TPS, e usando o block a aplicação está travando =( você tem alguma dica ?

  • @marcosgarcia179
    @marcosgarcia179 4 ปีที่แล้ว

    Show de bola

    • @algaworks
      @algaworks  4 ปีที่แล้ว +1

      Valeu mesmo, Marcos!

  • @vinilulu
    @vinilulu 4 ปีที่แล้ว +2

    Vídeo excelente! Isso pode ser uma ideia de micro serviço?, mas por favor amigos me nome de Jesus, façam um vídeo consumindo uma api no nível de maturidade 3 pelo Front Angular.

    • @algaworks
      @algaworks  4 ปีที่แล้ว +1

      Olá Vinicius!
      Com certeza, você vai utilizar bastante esse recurso em uma arquitetura de microsserviços. Esse exemplo mesmo já é uma ideia bem simples dentro desse conceito.
      Com relação a sua sugestão de vídeo, pode ter certeza que vou providenciar, já está anotado aqui!

  • @kobane1958
    @kobane1958 4 ปีที่แล้ว

    Willian , sou dev java e tenho conhecimento em Java server faces (jsf) porém vejo muitos falarem de spring mvc, o q o mercado hj em dia mais pede dentro os 2? Jsf já tá depreciado? Há muita diferença?

    • @algaworks
      @algaworks  4 ปีที่แล้ว +2

      Olá Kobane!
      O Spring vem realmente obtendo uma grande notoriedade, porém o JSF ainda está sendo usado e ainda faz parte da especificação Jakarta EE.
      É possível que mais cedo ou mais tarde ele será depreciado, mas como ainda há empresas que pedem essa skill no mercado, não é algo que você precise ou deva deixar de lado. A melhor opção nesse caso que vejo, é ampliar o seu leque de opções, então saber JSF e saber Spring MVC só tem a agregar em seu currículo.

  • @anibalmf1
    @anibalmf1 4 ปีที่แล้ว +1

    Ao utilizar o .block() obtenho o seguinte erro: block()/blockFirst()/blockLast() are blocking, which is not supported in thread reactor-http-nio-3
    Alguma ideia?

    • @algaworks
      @algaworks  4 ปีที่แล้ว +1

      Olá Anibal! Como ficou sua implementação?

    • @Charlesroberify
      @Charlesroberify 3 ปีที่แล้ว

      @@algaworks public DadosIbge getDadosIbge(Long numero) {
      Mono monoDadosIbge = this.webClient.method(HttpMethod.GET)
      .uri("/{numero}", numero)
      .retrieve().bodyToMono(DadosIbge.class);
      DadosIbge dadosIbge = monoDadosIbge.block();
      return dadosIbge;
      }

  • @lucasdaschagas
    @lucasdaschagas ปีที่แล้ว

    Alguem sabe se esse metodo é usado recentemente ? Qual seria o metodo mais conveniente ? E é realmente necessario mexer no main aplication ?

    • @algaworks
      @algaworks  ปีที่แล้ว

      Olá Lucas, não é necessário configurar o Bean do WebClient na classe Main. Você pode criar uma classe como WebClientConfig, anotá-la com @Configuration e colocar o Bean lá.

  • @MichaelSSantos
    @MichaelSSantos 4 ปีที่แล้ว

    Como seria a implementação caso o retorno fosse uma lista de produtos?

  • @franciscolourenco3521
    @franciscolourenco3521 4 ปีที่แล้ว

    Faz aí a diferença

  • @GustavoCardoso
    @GustavoCardoso 4 ปีที่แล้ว

    Se der erro trata com o try catch?

    • @algaworks
      @algaworks  4 ปีที่แล้ว +6

      Olá Gustavo!
      No caso da chamada síncrona, ou seja, no modo bloqueante, ai sim, um try/catch resolveria o problema, já no modo assíncrono teríamos algumas formas de tratar esses erros.
      Estou pensando em gravar um vídeo a respeito, o que você acha?

    • @GustavoCardoso
      @GustavoCardoso 4 ปีที่แล้ว

      @@algaworks Acho top. Principalmente por conta da opção assíncrona.

    • @FernandoSouza_nandohq
      @FernandoSouza_nandohq 4 ปีที่แล้ว

      @@algaworks Com certeza um vídeo com essa abordagem é bem-vindo :)

  • @gisionacosta
    @gisionacosta 4 ปีที่แล้ว

    O uso de WebClient é melhor que a implementação do RestTemplate ?

    • @algaworks
      @algaworks  4 ปีที่แล้ว +1

      Olá Gisiona!
      Sim, a implementação do WebClient é muito mais rica e completa que a do RestTemplate. Até por isso a própria documentação do Spring recomenda o uso do mesmo.
      O RestTemplate está em "modo de manutenção", ou seja, ele continua sendo levado para versões mais recentes do Spring, mas apenas com pequenas alterações e correções de bugs, logo o mesmo será depreciado.

  • @renanribeiro4690
    @renanribeiro4690 3 ปีที่แล้ว

    Boa tarde!
    Sou especialista Java, já havia implementado o WebClient, porém testa-lo está bem complexo.

    • @fernandoandrade7854
      @fernandoandrade7854 2 ปีที่แล้ว

      vc tbm colocou esse webClient no arquivo executável ?

  • @adalbertojosebrasaca9697
    @adalbertojosebrasaca9697 4 ปีที่แล้ว

    Melhor WebClient ou Webflux ?