Consumir APIs com FasterXML em Java - Felipe-builder/rest-conexa-challenger GitHub Wiki
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
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.
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.
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=xmlRequest 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:
http
GET http://localhost:8080/api/v1/user/46eb3cea-d202-4382-8e63-c1eb1d4c919f?mediaType=jsonResposta 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"
}
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.