Versionamento de API

Versionamento de API. Gostaria de versionar minha API Restful, assim eu poderia manter um maior controle sobre as alterações realizadas no meu código.

O versionamento de APIs pode ser realizado de algumas formas distintas, e aqui apresentaremos duas das mais utilizadas.

A primeira delas consiste em adicionar a versão diretamente na URL requisitada, como por exemplo ‘http://api.com/v1/listagem’, ‘http://api.com/v2/listagem’.

Essa é a forma mais fácil de gerenciar versões, pois somente exige modificação na URL, o que é algo simples de ser feito tanto no lado do cliente quanto na aplicação.

A segunda abordagem é adicionando um novo header na requisição HTTP, solicitando a ação para uma determinada versão da API.

Nesse caso, o header ‘X-API-VERSION’ é adicionado solicitando a versão a ser utilizada, o que torna a implementação no lado do cliente um pouco mais complexa do que apenas modificar a URL.

Não existe certo ou errado em nenhuma abordagem, e utilize a que melhor se encaixar a sua necessidade.

O código a seguir implementa as duas abordagens de versionamento de APIs. Os dois primeiros métodos são referentes ao versionamento por URL, e os dois últimos são baseados em um parâmetro passado pelo header.

Versionamento de API com Spring RESTful

Verifique a seguir o código:

import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/api")
public class VersionamentoApiController {
	/**
	 * Versionamento de API pela url, define versão 'v1'.
	 * 
	 * @param nome
	 * @return ResponseEntity<Response<String>>
	 */
	@GetMapping(value = "/v1/ola/{nome}")
	public ResponseEntity<String> olaNomeV1(@PathVariable("nome") String nome) {
		return ResponseEntity.ok(String.format("API v1: Olá %s!", nome));
	}

	/**
	 * Versionamento de API pela url, define versão 'v2'.
	 * 
	 * @param nome
	 * @return ResponseEntity<Response<String>>
	 */
	@GetMapping(value = "/v2/ola/{nome}")
	public ResponseEntity<String> olaNomeV2(@PathVariable("nome") String nome) {
		return ResponseEntity.ok(String.format("API v2: Olá %s!", nome));
	}

	@GetMapping(value = "/ola/{nome}", headers = "X-API-Version=v1")
	public ResponseEntity<String> olaNomeHeaderV1(
			@PathVariable("nome") String nome) {
		return ResponseEntity.ok(String.format("API Header v1: Olá %s!", nome));
	}

	/**
	 * Versionamento de API pelo Header 'X-API-Version', define versão 'v2'.
	 * 
	 * @param nome
	 * @return ResponseEntity<Response<String>>
	 */
	@GetMapping(value = "/ola/{nome}", headers = "X-API-Version=v2")
	public ResponseEntity<String> olaNomeHeaderV2(
			@PathVariable("nome") String nome) {
		return ResponseEntity.ok(String.format("API Header v2: Olá %s!", nome));
	}
}

O versionamento por URL é muito simples, basta adicionar a versão no mapeamento da anotação ‘@GetMapping’.

Já o versionamento por parâmetro do header implica na adição da referência da versão também na anotação ‘@GetMapping’, mas em seu parâmetro ‘header’.

 

Baixe o ebook de API RESTful em Spring Boot

 
Encapsulando o Response da API RESTful
 

Curso que recomendo para você

Selecionamos uma série de cursos on-line para você se preparar e abrir as portas para as vagas de programação. Conheça cada um dos cursos nos links oficiais abaixo.

Construa e plublique APIs com Spring Boot
RESTful Spring Boot
No curso você será capaz de criar APIs RESTful com elementos altamente escaláveis e publicar em cloud.
593 alunosHoras do curso 40h Horas do curso certificado
Promoção R$ 147
12x de R$ 14,32
O curso API RESTful com Spring Boot e Java 8 – Guia de Referência, é um curso que visa apresentar os principais componentes de uma API RESTful eficiente e escalável no formato de problemas e soluções.
Mais de 200 aulas curso completo em JSF 2.2
JSF 2.2 e PrimeFaces
Curso completo em JSF 2.2 com PrimeFaces, Spring, Hibernate, JPA, Ireport e CDI. Iremos do básico ao avançado em JSF.
2.985 alunosHoras do curso 100h Horas do curso certificado
Promoção R$ 189
12x de R$ 18,41
A melhor forma de aprender a desenvolver sistemas em Java é tendo como exemplo um projeto e curso completo onde possa observar o código para melhor entendimento do funcionamento das rotinas a acompanhar as vídeos aulas de desenvolvimento. Esse curso contém tudo que um desenvolvedor precisa saber para entrar no mercado de trabalho.

 

 

 


Acesse
Cursos e Projetos
Java
Acesse
Outros Cursos
PHP MySQL Android
Acesse
Encomende um Projeto
Feito pra Você
Acesse
Tire as Dúvidas On-line
Consultor
Acesse
Aulas de Java só suas
Encomende Agora
Acesse
Dividindo Conhecimento
Posts e Tutoriais
Acesse
Sites e Parceiros
Associados
Acesse
Conheça os curso gratuitos
Grátis

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Instrutor Java Quer se tornar aluno VIP? CLIQUE AQUI!
Instrutor Java

Alex Fernando Egidio
Autor, criador e fundador do Java Avançado Cursos TI. Atua no mercado como desenvolvedor e engenheiro de sistemas em Java é apaixonado por desenvolvimento web em Java e pela “mágica” que seus frameworks trazem para o dia a dia de nós desenvolvedores.
Com mais de 10 anos de experiência ajuda programadores do Brasil todo a se tornarem profissionais.