Consumir APIs com FasterXML em Java - Felipe-builder/rest-conexa-challenger GitHub Wiki

Uso do Jackson Dataformat XML em uma Aplicação Spring Boot

Introdução

FasterXML é uma biblioteca Java popular para analisar e gerar dados JSON e XML. Ele fornece uma API poderosa e flexível para trabalhar com dados JSON e XML, e é amplamente utilizado em aplicativos Java.

Nesta documentação, mostraremos como usar o FasterXML para consumir APIs em XML e JSON. Vamos cobrir os seguintes tópicos:

  • Dependência de jackson-dataformat-xml: Adicionando a dependência necessária ao seu projeto
  • Configuração de negociação de conteúdo: Ativando a capacidade de aceitar respostas XML e JSON
  • Análise de resposta XML: Desserializando respostas XML em objetos Java
  • Análise de resposta JSON: Desserializando respostas JSON em objetos Java

Dependência Maven

Certifique-se de adicionar a seguinte dependência ao seu arquivo pom.xml:

XML

<dependency>
  <groupId>com.fasterxml.jackson.dataformat</groupId>
  <artifactId>jackson-dataformat-xml</artifactId>
  <version>2.13.3</version>
</dependency>

Esta dependência adicionará as classes necessárias para analisar e gerar dados XML ao seu projeto.

Configuração Spring Boot

Crie uma classe de configuração Spring Boot para configurar a negociação de conteúdo. Por padrão, os aplicativos Spring Boot retornam respostas JSON. Para habilitar a capacidade de aceitar respostas XML e JSON, você precisa configurar a negociação de conteúdo. A negociação de conteúdo é um recurso do Spring MVC que permite especificar o formato da resposta com base nos cabeçalhos da solicitação.

Para configurar a negociação de conteúdo, você precisa adicionar o seguinte código ao seu aplicativo Spring Boot:

Config para QueryParams

JAVA

@Configuration
public class WebConfig implements WebMvcConfigurer {

  @Override
  public void configureContentNegotiation(ContentNegotiationConfigurer configurer) {
    configurer
      .favorParameter(true)
      .parameterName("mediaType")
      .ignoreAcceptHeader(true)
      .useRegisteredExtensionsOnly(false)
      .defaultContentType(MediaType.APPLICATION_JSON)
      .mediaType("xml", MediaType.APPLICATION_XML)
      .mediaType("json", MediaType.APPLICATION_JSON);
  }
}

Config para Headers

JAVA

@Configuration
public class WebConfig implements WebMvcConfigurer {

	@Override
	public void configureContentNegotiation(ContentNegotiationConfigurer configurer) {
		configurer.favorParameter(false)
			.parameterName("mediaType").ignoreAcceptHeader(false)
			.useRegisteredExtensionsOnly(false)
			.defaultContentType(MediaType.APPLICATION_JSON)
				.mediaType("json", MediaType.APPLICATION_JSON)
				.mediaType("xml", MediaType.APPLICATION_XML);
	}
	
	
}

Esta configuração permitirá que você especifique o formato desejado da resposta através do parâmetro de consulta mediaType. Isso significa que se o parâmetro de consulta mediaType estiver presente, a resposta será formatada de acordo com o valor do parâmetro de consulta. Se o parâmetro de consulta mediaType não estiver presente, a resposta será formatada como JSON.

Exemplos de Uso

Exemplo de Requisição XML

Faça uma requisição GET especificando o formato XML:

Request com QueryParams

http

GET http://localhost:8080/api/v1/user/46eb3cea-d202-4382-8e63-c1eb1d4c919f?mediaType=xml

Request com Headers

http

GET http://localhost:8080/api/v1/user/46eb3cea-d202-4382-8e63-c1eb1d4c919f

Request Headers {
   Accept: application/xml
}

Resporta XML:

XML

<UserDTO>
    <id>46eb3cea-d202-4382-8e63-c1eb1d4c919f</id>
    <email>[email protected]</email>
    <fullname>Givonaldo Pereira 123</fullname>
    <specialty>Cardiologista - SR</specialty>
    <cpf>101.202.303-10</cpf>
    <birth_date>1980-03-10</birth_date>
    <phone>(21) 3232-6562</phone>
</UserDTO>

Exemplo de Requisição JSON

Exemplo de Requisição JSON:

http

GET http://localhost:8080/api/v1/user/46eb3cea-d202-4382-8e63-c1eb1d4c919f?mediaType=json

Resposta JSON:

JSON

{
    "id": "46eb3cea-d202-4382-8e63-c1eb1d4c919f",
    "email": "[email protected]",
    "fullname": "Givonaldo Pereira 123",
    "specialty": "Cardiologista - SR",
    "cpf": "101.202.303-10",
    "birth_date": "1980-03-10",
    "phone": "(21) 3232-6562"
}

Observação:

Lembre-se de ajustar os detalhes conforme necessário para o seu projeto específico. Essa documentação fornece um ponto de partida para integrar a negociação de conteúdo com o Jackson Dataformat XML em sua aplicação Spring Boot.

⚠️ **GitHub.com Fallback** ⚠️