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?
Sim! Vamos comparar os 2 recursos RESTtemplate x WebClient!!! Grande @William, muito obrigado, belo video. #SpringWebClient me parece que ficou bem bom.
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...
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 RUclips, 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.
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.
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.
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
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?
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.
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!
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 ?
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")))
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?
Ó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.
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?
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.
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.
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?
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!
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?
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?
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.
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.
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á.
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
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?
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?
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.
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.
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!
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.
Parabéns! Muito bem explicado.
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?
Cara tu é fera demais!! Valeu
Valeu, William! Conteúdo nota 1.000! Parabéns e muito obrigado!
Sim! Vamos comparar os 2 recursos RESTtemplate x WebClient!!!
Grande @William, muito obrigado, belo video. #SpringWebClient me parece que ficou bem bom.
Parabéns, esses vídeos estão muito bons 🎉 sugestão, falem sobre Flux!
Opa, obrigado de verdade Estevão! Pode deixar, que já está anotado sua sugestão!
Muito obrigado pelo vídeo!! Super esclarecedor e bem explicado.
Cabeludo você deu show de aula rapaz. Parabéns!
aula fantástica. poderia ter um vídeo desses falando sobre o spring reativo Mono e Flux sendo utilizados nos controllers e services
excelente conteúdo!!!
Merece no 1000 professor!!!
Parabéns, ótimo vídeo! Gostaria muito de ver um vídeo sobre consumo de web service SOAP.
Vídeo 100%. Ajudou de mais.
Ótimo conteúdo com didática excelente! Por mais vídeos assim. Obrigado!!
Poxa, muito obrigado Wallace! Fico feliz que tenha gostado.
Vamos sempre nos esforçar para entregar bons conteúdos pra vocês :D
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...
Show Willian exatamente o que estava procurando.
Parabens, excelente vídeo, você tem algum vídeo sobre padrão Saga para micro services ?
O conteúdo da Algaworks é muito bom! Parabéns pelo trabalho!
Aula top. Muito obrigado por compartilhar seu conhecimento.
o william me salvando mesmo depois de eu sair do projeto kkkkkkk valeu mano é noiss
Bom D+ só queria saber como consumir uma API externa e o vídeo faz isso e ainda ensina muito mais.
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 RUclips, 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.
soap num é meio muito ruim?
Mais um vídeo top, parabéns!!! , eu gostaria de ver geração de arquivo csv
Top demais. Muito bom, obrigado pelo vídeo!
Nota 10. Show de aula
Valeu Willian!! obrigado por compartilhar o conhecimento. Muito bom o vídeo. Parabéns!!
Poxa, muito obrigado mesmo Antonio! :D
Aula top! muito obrigado
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.
Caraba muito bom... FAÇA O VIDEO DAS DIFERENÇAS SIM... ajudaria muito
Opa, que bom que gostou Jefferson!
Beleza, vou fazer esse vídeo!
Excelente conteúdo e ótima didática. Parabéns!
Conteúdo muito valioso
Poxa, muito obrigado Domingos. Ficamos muito felizes em saber que tenha gostado. :D
Muito bom !!!
opa... tudo contéudo muito bom... seria possivel tratar sobre a programação reativa e o projeto reactor?
Olá mergulhador!
Já está na nossa lista de estudos, continue nos sugerindo novos assuntos!
muito bom!
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.
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!
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
Que video sensacional! Ótima explicação. Estou precisando implementar algo parecido no meu trabalho e foi de extrema ajuda
Faz de como se comunicar em cima do protocolo https...por favor.
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.
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?
@@algaworks Adoraria ver esse video =)
@@algaworks Seria muito bom =D
@@algaworks Esse vídeo seria muito legal em?!
Um vídeo mostrando as diferenças seria sensacional
Pode deixar que vou providenciar, já está anotado!
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.
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!
@@algaworks Opa. Obrigado, me refiro aos demais verbos HTTP sim. Parabéns!!! Att
Uma dúvida, eu conseguiria ter diferentes retornos de objetos, com status code diferentes?
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 ?
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")))
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?
Ó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.
Ótimo vídeo, me ajudou muito, poderia me dar uma dica? como funciona os relacionamentos ManyToOne e OneToMany com o webclient? Valeu!
Muito bom, obrigado!!!!
Eu consigo usar esse mesma ideia para consumir uma api SOAP? Se puder fazer um video consumindo uma api SOAP com springboot seria bacana.
Opa blz! como eu faria para retornar uma lista de produtos ?
o Mono traz um produto e para trazer uma Lista ?
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?
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.
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.
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?
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!
Problemas com block()? Deixa o seu pom.xml compatível com a do repositório do projeto 'consume'
Paz! Qui tal. Esse conteudo esta actualizado para 2022?
Olá Estevao, você teve alguma dificuldade específica?
E se não for um projeto "spring boot"? E se for um projeto com spring 3... por exemplo ?
Show de bola
Valeu mesmo, Marcos!
Usei webclient para uma aplicação com 600TPS, e usando o block a aplicação está travando =( você tem alguma dica ?
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?
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?
Olá Anibal! Como ficou sua implementação?
@@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;
}
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.
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.
@@algaworks Haaaa duvida, em meus teste que vi em outros videos usam o build inves do create, qual a diferença?
Alguem sabe se esse metodo é usado recentemente ? Qual seria o metodo mais conveniente ? E é realmente necessario mexer no main aplication ?
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á.
Como seria a implementação caso o retorno fosse uma lista de produtos?
E-X-C-E-L-E-N-T-E-!!!
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
Se der erro trata com o try catch?
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?
@@algaworks Acho top. Principalmente por conta da opção assíncrona.
@@algaworks Com certeza um vídeo com essa abordagem é bem-vindo :)
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?
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.
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.
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!
O uso de WebClient é melhor que a implementação do RestTemplate ?
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.
Boa tarde!
Sou especialista Java, já havia implementado o WebClient, porém testa-lo está bem complexo.
vc tbm colocou esse webClient no arquivo executável ?
Melhor WebClient ou Webflux ?
Faz aí a diferença