Entrevistas – Desenvolvedor Java – REST e HTTP #8

O acrônimo estendido de REST é Representational State Transfer e pode ser considerado como um estilo de arquitetura de software que define algumas restrições pra criar web services, como o uso do protocolo de transferência por hypertexto, mais conhecido como HTTP. Nest post irei descrever as minhas respostas para as perguntas que costumo fazer a respeito do tema “REST & HTTP” definido no post #0 da série.

Motivação

Há um tempo que APIs REST tem se tornado o padrão ao pensar em usar web services em soluções B2B, B2C e C2C. O protocolo utilizado para transferência é o HTTP(s) e considerando o cenário em que arquiteturas orientadas a serviço (SOA), Cloud Computing e, mais recentemente, o uso de microsserviços tem ganhado força no cenário de desenvolvimento de software, este assunto se torna um tema relevante para o aprendizado de desenvolvedores java e um diferencial, ou requisito, em sua contratação baseado nas necessidades da empresa contratante.

Perguntas

  • Quais verbos HTTP você conhece?

Resposta: Os métodos, ou verbos, HTTP que conheço e utilizo diretamente são GET, POST, PUT, PATCH e DELETE. Sei que existem também HEAD, TRACE, OPTIONS e CONNECT, mas não tenho o hábito de utilizá-los diretamente.

  • Qual a diferença entre PUT e PATCH?

Resposta: O PATCH foi completamente definido após o PUT e serve para ser utilizado em necessidades de atualizações parciais de recursos, diferente do PUT, que deve ser utilizado para sobreescritas totais de recursos.

  • Quais são as famílias de status de retorno?

Respostas: As famílias são 1xx, 2xx, 3xx, 4xx e 5xx, com diversos códigos de retorno e responsabilidades informativa, de sucesso, redirecionamento, erro do client e erro do servidor respectivamente.

  • Qual é a diferença semântica entre retornar um erro da família 500 e um da 400?

Resposta: Os códigos de retorno 4xx devem ser usados em erros do client e os da família 5xx em erros do servidor.

Essas perguntas são mais relacionadas a HTTP do que a REST propriamente e isso pode variar de acordo com a necessidade e uso nas aplicações Java. Nos casos em que se utiliza Spring, a necessidade de entender HTTP e Spring MVC costuma ser suficiente para a maioria das utilizações de APIs REST em que tive a oportunidade de vivenciar. Em outros cenários, entender as diferenças entre REST e SOAP pode ser necessário e/ou realmente ir mais afundo nos conhecimentos de web services.

Para saber mais

Gostou? Foi útil? Concorda ou discorda de algum ponto? Comenta ai e vamos aprender mais juntos.

Espero que te ajude 😉

Deixe um comentário

Faça o login usando um destes métodos para comentar:

Logo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s