JAX-RS (@PUT ANNOTATION)

    Herkese merhaba.Bu yazımızda bir başka HTTP metodu olan PUT'u öğreneceğiz. Daha önce @GET ve @POST'u öğrenmiştik. Put veri güncellememizi sağlıyor. Bu tip bir request mesajı oluşturduğumuzda güncellemek istediğimiz veri bulunup istenilen değer ile güncelleniyor. Güncellemek istediğimiz veri bulunmaz ise bu veri post ediliyor. Eğer zaten var ise herhangi bir işlem gerçekleşmeyecektir. Bu örneğimizde ise item sınıfımızdaki override ettiğimiz equals ve hashcode fonksiyonları önemlidir. Burada kontrol edilecek verinin hangi tipte olduğu bilinmediği için bu fonksiyonları override ediyoruz. Yani örneğin bir String değişkeninin diyelim ki a,bunun başka bir a'ya eşit olduğunu String sınıfı bilir fakat bizim yazdığımız item sınıfı gelen değişkenin int'mi String'mi olduğunu bilmez ve bilmediği içinde bu put'ta hataya yol açar.Aynı veri tekrar eklenebilir. Web servis kısmımızda ise girilen verilenin hangi formatta olduğunu ve bu verinin list'emizde bulunup bulunmadığını kontrol ettik. Eğer bu veri mevcut ise http 204 kodlu response yok ise bu veriyi ekleyip 201 kodlu response mesajını gönderir. Kodlarımıza ve test çıktımıza bakalım.

Arkadaşlar bu aralar çok fazla çalışıyorum. Bundan şikayetçimiyim,asla değilim. Hepsi hayallerim için. Belki de benim hayallerimin geçtiği yol ile sizin hayalleriniz kesiştiği için yazılarımı takip ediyorsunuzdur. Ne olursa olsun vazgeçmeyin.İnsan beyni herşeyi öğrenecek güçtedir. Ha rakibiniz 4 saatte siz 6 saattemi öğreniyorsunuz. O 12 saat çalışıyorsa siz 24 saat çalışın.Neyse bu arada bu yazılara bakmadan önce Java'nın Collections kütüphanesine bir göz atın. Ve anlamadığınız her satırı araştırın veya sorun.

package com.mycompany.putannotation;
import javax.ws.rs.*;
import javax.ws.rs.core.*;
@ApplicationPath("api")
public class ApplicationConfig extends Application {
}
view raw a1.java hosted with ❤ by GitHub
package com.mycompany.restfulwebservice;
import javax.ws.rs.*;
import javax.ws.rs.core.*;
import com.mycompany.putannotation.*;
import java.util.List;
@Path("items")
public class itemRestService {
@Context
private UriInfo uriInfo;
private DataService dt=DataService.getInstance();
@GET
@Produces(MediaType.APPLICATION_JSON)
public List<item> getItems(){
return dt.getItemList();
}
@Path("{sku}")
@PUT
@Consumes(MediaType.APPLICATION_JSON)
public Response createItem(item item, @PathParam("sku") String sku) {
if (dt.itemExists(sku)) {//204
return Response.noContent()
.build();
} else {//201
dt.createItem(item, sku);
return Response.created(uriInfo.getAbsolutePath())
.build();
}
}
@GET
@Path("{sku}")
@Produces(MediaType.APPLICATION_JSON)
public Response getCustomer(@PathParam("sku") String sku) {
item item = dt.getItemBySku(sku);
if (item == null) {
return Response.status(Response.Status.NOT_FOUND)
.build();
} else {
return Response.ok()
.entity(item)
.build();
}
}
}
view raw a2.java hosted with ❤ by GitHub
package com.mycompany.putannotation;
import java.util.ArrayList;
import java.util.List;
public class DataService {
private List<item> itemList = new ArrayList<>();
private static DataService ourInstance = new DataService();
public static DataService getInstance() {
return ourInstance;
}
public void createItem(item item, String sku) {
item itemToStore = new item(sku);
itemToStore.setPrice(item.getPrice());
itemToStore.setName(item.getName());
itemList.add(itemToStore);
}
public boolean itemExists(String sku) {
for (item item : itemList) {
if (item.getSku().equals(sku)) {
return true;
}
}
return false;
}
public List<item> getItemList() {
return itemList;
}
public item getItemBySku(String sku) {
for (item item : itemList) {
if (item.getSku().equals(sku)) {
return item;
}
}
return null;
}
}
view raw a3.java hosted with ❤ by GitHub
package com.mycompany.putannotation;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlRootElement;
import java.math.BigDecimal;
@XmlRootElement
public class item {
@XmlAttribute
private String sku;
private String name;
private BigDecimal price;
public item() {
}
public item(String sku) {
this.sku = sku;
}
public String getSku() {
return sku;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public BigDecimal getPrice() {
return price;
}
public void setPrice(BigDecimal price) {
this.price = price;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
item item = (item) o;
return sku.equals(item.sku);
}
@Override
public int hashCode() {
return sku.hashCode();
}
@Override
public String toString() {
return "Item{" +
"sku='" + sku + '\'' +
", name='" + name + '\'' +
", price=" + price +
'}';
}
}
view raw a4.java hosted with ❤ by GitHub





Kendinize iyi bakın.İyi çalışmalar...


Hiç yorum yok:

Yorum Gönder

Spring Boot Uygulamasını Heroku üzerinde Deploy Etme

Bu yazımızda sizlere spring boot ile yazılmış basit bir Rest api'nin heroku üzerinde nasıl deploy edebileceğimizi göstereceğim. Önce ...