Spring Boot Content Negotiation XML – JSON Uygulama Örneği
Spring Boot Dersleri‘ne devam ediyorum.
Bu yazıda Spring Boot Content Negotiation ne olduğu açıklayacağım ve bir uygulama örneği yapacağım.
Content Negotiation Nedir?
Spring Boot uygulamamız, HTTP isteği için belirlediğimiz veri formatını belirleyebilme özelliğine sahiptir. İstemciden gelen verinin belli bir formatta olduğunu varsayarak uygulamamızı yapılandırabiliriz. Birden fazla istemciden farklı veri formatlarını desteklemek için aynı API’yi kullanabiliriz. Bu sayede yazılımımız, JSON ve XML formatlarında verileri aynı endpointte işleyebilir.
Spring Boot uygulamamızda yapacağımız konfigürasyon yapılandırması ile istemciden gelecek tipe göre veriyi işleyebileceğiz
Uygulama Örneği
Basit bir rest api uygulaması yapalım.
Bir Employee sınıfı olşuturalım.
public class Employee {
private String id ;
private String name;
private String lastName;
private String email;
private String departmentId;
}
Code language: PHP (php)
Şimdi controllerimizi oluşturulım ve bu sınıftan gelen adı string olarak geri döndürelim.
@RestController
public class MessageController {
@PostMapping("/employess)
public String save(@RequestBody Employee employee){
return employee.getName;
}
}
Code language: Java (java)
Eğer istek xml formatında gelecek ise verileri kolay bir şekilde maplemek için aşağıdaki kütüphaneyi eklememiz gerekmektedir.
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-xml</artifactId>
</dependency>
Code language: HTML, XML (xml)
Uygulamamıza gelen requestin Json ya da Xml olması için bir WebConfig
sınıfı oluşturacağız ve isteklerin bu formatta kabul edilmesini sağlayacağız.
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Override
public void configureContentNegotiation(ContentNegotiationConfigurer configurer) {
configurer.favorParameter(true)
.parameterName("mediaType")
.defaultContentType(MediaType.APPLICATION_JSON)
.mediaType("xml", MediaType.APPLICATION_XML)
.mediaType("json", MediaType.APPLICATION_JSON);
}
}
Code language: Java (java)
WebMvcConfigurer
sınıfını implement ederek configureContentNegotiation
sınıfı içerisinde neler yaptık bakalım.
- defaultContentType: Eğer özellikle bir tip belirtilmedi ise kabul edeceğimiz format json formatı olacaktır.
- mediaType: Gelen istek içerisinde mediaType parametresi xml ya da json belirtildiğinde kabul ettiğimiz formatları da tanımlamış olmaktayız.
XML formatında bir istek oluşturalım.
Cevap olarak ise Burak
çıktısını verecektir. Eğer bir mediaType
belirtmezsek json olarak göndermemiz gerekmektedir. mediaType
tanımı json
olursa da yine json formatı kabul etmemiz gerekmektedir.
No Comment! Be the first one.