Bir önceki yazımda
yazdığımız web service’i başka bir uygulama da kullanmak
istediğimizi bir anlık düşünelim. Zaten web service’lerin
görevi de bu şekil bir ara katman görevi görmektir. İşte tam bu
esnada devreye RestTemplate girer.
Ben yazdığım
service’i stand alone bir Java uygulamasında kullanacağım. Siz
de kendi yazdığınız web service’i bir Android uygulamasında ya
da başka bir web uygulamasında kullanabilirsiniz. Tek yapmanız
gereken şey yazdığınız web service’in bir server üzerinde
deploy edilmiş olmasıdır.
RestTemplateKullanimiMain.java
public
class
RestTemplateKullanimiMain {
private
static
final
String LIST_URL
=
"http://localhost:9090
/SpringDispatcherServlet/kitaplarRest/kitaplar";
private
static
final
String FIND_BY_ID_URL=
"http://localhost:9090/SpringDispatcherServlet/kitaplarRest/findKitapById";
private
static
final
String CREATE_URL
=
"http://localhost:9090/SpringDispatcherServlet/kitaplarRest/createKitap";
private
static
final
String UPDATE_URL
=
"http://localhost:9090/SpringDispatcherServlet/kitaplarRest/updateKitap";
private
static
final
String DELETE_URL
=
"http://localhost:9090/SpringDispatcherServlet/kitaplarRest/deleteKitap";
public
static
void
main(String[] args) {
RestTemplate
restTemplate = new
RestTemplate();
Kitap
kitap = new
Kitap();
KitapResult
kitapResult = new
KitapResult();
ArrayList<MediaType>
acceptableMediaTypes = new
ArrayList<MediaType>();
acceptableMediaTypes.add(MediaType.APPLICATION_JSON);
HttpHeaders
headers = new
HttpHeaders();
headers.setAccept(acceptableMediaTypes);
HttpEntity<Kitap>
entity
= new
HttpEntity<Kitap>(kitap, headers);
HttpEntity<KitapResult>
resultEntity
= new
HttpEntity<KitapResult> (kitapResult, headers);
HttpStatus
statusCode
= null;
ResponseEntity<Kitap>
result
= null;
ResponseEntity<KitapResult>
kayitResult
= null;
// Kitap
Listesi
kitapListele(restTemplate);
// Kitap Arama
kitap.setKitapId(126);
try
{
result = kitapAra(restTemplate,
entity, kitap);
statusCode = result.getStatusCode();
}
catch
(HttpClientErrorException e) {
statusCode = e.getStatusCode();
}
if(statusCode
== HttpStatus.NOT_FOUND){
System.err.println("Kayıt
bulunamadı.");
}else
if(statusCode
== HttpStatus.OK){
System.out.println(result.getBody().getKitapAd()
+ "
"
+result.getBody().getYazarAd());
}
//Kitap
Kayıt
kitapResult.setKitapAd("Şah
Baba");
kitapResult.setYazarAd("Murat
BARDAKÇI");
kitapResult.setKitaptur("Tarih");
kitapResult.setKitapDurum("Rafta");
try
{
kayitResult = kitapKayit(restTemplate,resultEntity,kitap);
statusCode = kayitResult.getStatusCode();
}
catch
(HttpClientErrorException e) {
statusCode = e.getStatusCode();
}
if(statusCode
== HttpStatus.CREATED){
System.out.println(kitapResult.getKitapAd()+"
adlı kitap kaydedildi.");
}
//Kitap
Sil
kitap.setKitapId(275);
try
{
result = deleteKitap(restTemplate,
entity, kitap);
statusCode = result.getStatusCode();
}
catch
(HttpClientErrorException e) {
statusCode = e.getStatusCode();
}
if(statusCode
== HttpStatus.OK){
System.out.println(result.getBody().getKitapAd()+"
adlı kitap silindi!");
}else
if(statusCode
== HttpStatus.NOT_FOUND){
System.out.println("Kayıt
bulunamadı!");
}
}
private
static
void
kitapListele(RestTemplate restTemplate){
List<LinkedHashMap>
emps = restTemplate.getForObject(LIST_URL,
List.class);
for(LinkedHashMap
map : emps){
System.out.println("Kitap
ID="+map.get("kitapId")+"
, Kitap Ad="+map.get("kitapAd")+"
"
+
",
Yazar Ad="+map.get("yazarAd")+"
, Kitap Tür = "+map.get("kitaptur")+"
, "
+
"Kitap
Durum = "+map.get("kitapDurum"));
}
}
private
static
ResponseEntity<Kitap> kitapAra(RestTemplate
restTemplate,HttpEntity<Kitap> entity,Kitap kitap){
return
restTemplate.exchange(FIND_BY_ID_URL,
HttpMethod.POST,
entity, Kitap.class);
}
private
static
ResponseEntity<KitapResult> kitapKayit(RestTemplate
restTemplate,HttpEntity<KitapResult> entity,Kitap kitap){
return
restTemplate.exchange(CREATE_URL,
HttpMethod.POST,
entity, KitapResult.class);
}
private
static
ResponseEntity<Kitap> deleteKitap(RestTemplate
restTemplate,HttpEntity<Kitap> entity,Kitap kitap){
return
restTemplate.exchange(DELETE_URL,
HttpMethod.POST,
entity, Kitap.class);
}
private
static
ResponseEntity<Kitap> updateKitap(RestTemplate
restTemplate,HttpEntity<Kitap> entity,Kitap kitap)
{
return
restTemplate.exchange(UPDATE_URL,
HttpMethod.POST,
entity, Kitap.class);
}
}
Bir sonra ki yazımda görüşmek üzere. İyi çalışmalar...
Kodlarını açıklarsan daha iyi olur.
YanıtlaSilHer satırı açıklamasan da, hiç değilse satıriçi yorumlar olursa takip eden artar.