REST kısaltması, Temsili Durum Aktarımı anlamına gelirken API, Uygulama Programlama Arayüzü anlamına gelir. Birlikte, bir REST API'sine başvururlar. REST API, istekleri ve yanıtları bir REST mimarisinde iki yazılım sistemi arasında aktaran bir hizmettir.
REST mimarisi, dört istek fiilinden birini kullanan URL'ler aracılığıyla erişilebilen web hizmetleri oluşturur: POST, GET, PUT ve DELETE. Dolayısıyla, bir REST API'sinin URL'ler aracılığıyla kaynakları oluşturmanıza, okumanıza, güncellemenize ve silmenize izin veren bir yazılım olduğunu söyleyebilirsiniz.
Spring Boot kullanarak REST API oluşturmayı öğrenebilirsiniz.
Spring Boot Uygulamasını Başlatma
Yapmanız gereken ilk şey Baharın temellerini öğrenin ve bir Spring Boot uygulaması kurun. Yine de bağımlılıkları değiştirmeniz gerekecek. Web bağımlılığına ek olarak, Spring Data Java Persistent API (JPA) bağımlılığını ve kullanmayı düşündüğünüz veritabanının sürücüsünü (bu uygulama MySQL kullanacaktır) edinmeniz gerekir.
Bu REST API için bir denetleyiciye, bir modele ve bir havuza ihtiyacınız olacak. Dolayısıyla, REST API aşağıdaki dosya yapısına sahip olacaktır:
Modeli Oluşturma
Oluşturmanız gereken ilk sınıf, veri mantığını depolayan müşteri modelidir.
paket com.onlineshopaholics.api.model;
içe aktarmak jakarta.sebat. Kolon;
içe aktarmak jakarta.sebat. varlık;
içe aktarmak jakarta.sebat. Oluşturulan Değer;
içe aktarmak jakarta.sebat. Üretim Türü;
içe aktarmak jakarta.sebat. İD;
içe aktarmak jakarta.sebat. Masa;@Masa(isim="müşteri")
@Varlık
halksınıfMüşteri{
@İD
@GeneratedValue(strateji = GenerationType. OTO)
özel tamsayı kimliği;@Kolon(isim="müşteri adı")
özel Dize adı;özel Dize e-postası;
halk tamsayı getId(){
geri dönmek İD;
}halkgeçersizkimliği belirle(Tamsayı kimliği){
Bu.id = kimlik;
}halk Sicim getName(){
geri dönmek isim;
}halkgeçersizsetName(Dize adı){
Bu.isim = isim;
}halk Sicim e-posta al(){
geri dönmek e-posta;
}
halkgeçersizsetEmail(Dize e-postası){
Bu.email = e-posta;
}
}
Yukarıdaki müşteri sınıfından, her müşterinin bir kimliği, adı ve e-postası olduğunu göreceksiniz. Ayrıca, farklı amaçlara hizmet eden birkaç not göreceksiniz.
- @Entity: Müşteri sınıfını bir JPA varlığı olarak bildirir. Bu, JPA'nın ilişkisel bir veritabanında sütunlar oluşturmak için sınıftaki alanları kullanacağı anlamına gelir.
- @Table: Müşteri modeli sınıfına eşlenecek tablonun adını belirler.
- @Id: Veritabanındaki varlığı benzersiz olarak tanımlayacak bir özellik belirtir.
- @GeneratedValue ve @GenerationType: Bunlar, ilişkilendirdiği alan için otomatik oluşturma stratejisi belirtmek üzere birlikte çalışır. Böylece, id alanı, her yeni müşteri oluşturduğunuzda otomatik olarak benzersiz bir değer üretecektir.
- @Column: Veritabanındaki bir sütunla eşleşen bir özelliği belirtir. Bu nedenle, name özelliği, veritabanındaki bir müşteriadı sütununa eşlenir.
Havuz Oluşturma
Bu havuz, veritabanındaki müşteri verileriyle etkileşime girmenizi sağlayacaktır.
paket com.onlineshopaholics.api.repository;içe aktarmak org.springframework.data.repository. Crud Deposu;
içe aktarmak com.onlineshopaholics.api.model. Müşteri;
halkarayüzMüşteri HavuzuuzanırCrud Deposu<Müşteri, tamsayı>{}
Müşteri deposu genişliyor Spring's CrudRepositoy Arayüz, Müşteri modeli sınıfını, varlık için benzersiz tanımlayıcının türü olan Integer ile birlikte iletir.
CrudRepository arabirimi, REST API için ihtiyaç duyacağınız genel CRUD yöntemleri dahil 10'dan fazla işleme erişim sağlar. Dolayısıyla, CrudRepository ihtiyaç duyacağınız yöntemleri zaten tanımladığından, bunları CustomerRepository arayüzünde açıkça beyan etmeye gerek yoktur.
Denetleyiciyi Oluşturma
Denetleyici, modeli ve depoyu kullanarak veritabanınızdaki verileri güncellemenizi sağlar.
paket com.onlineshopaholics.api.controller;içe aktarmak java.util. İsteğe bağlı;
içe aktarmak org.springframework.beans.factory.annotation. otomatik kablolu;
içe aktarmak org.springframework.web.bind.annotation. Eşlemeyi Sil;
içe aktarmak org.springframework.web.bind.annotation. GetMapping;
içe aktarmak org.springframework.web.bind.annotation. Yol Değişkeni;
içe aktarmak org.springframework.web.bind.annotation. PostMapping;
içe aktarmak org.springframework.web.bind.annotation. PutMapping;
içe aktarmak org.springframework.web.bind.annotation. İstek Gövdesi;
içe aktarmak org.springframework.web.bind.annotation. İstek Eşleme;
içe aktarmak org.springframework.web.bind.annotation. İstekParamı;
içe aktarmak org.springframework.web.bind.annotation. Yanıt Gövdesi;
içe aktarmak org.springframework.web.bind.annotation. RestController;
içe aktarmak com.onlineshopaholics.api.model. Müşteri;
içe aktarmak com.onlineshopaholics.api.repository. Müşteri Deposu;
@RestController
@RequestMapping("/müşteriler")
halksınıfMüşteri Denetleyicisi{
@otomatik kablolu
özel Müşteri Deposu müşteri Deposu;
// yeni müşteri oluştur
@PostMapping("/eklemek")
halk Müşteri ekleYeniMüşteri(@RequestBody Müşteri yeni Müşteri){
müşteri kullanıcı = yeni Müşteri();
user.setName (newCustomer.getName());
user.setEmail (newCustomer.getEmail());
clientRepository.save (kullanıcı);
geri dönmek kullanıcı;
}
// tüm müşterileri görüntüle
@GetMapping("hepsini gör")
halk@yanıtBodyyinelenebilirTüm Müşterileri Getir() {
geri dönmek clientRepository.findAll();
}
// belirli müşteriyi görüntüle
@GetMapping("görünüm/{kimlik}")
halk İsteğe bağlımüşteri almak(@PathVariable Tamsayı kimliği) {
geri dönmek customerRepository.findById (kimlik);
}
// mevcut bir müşteriyi güncelle
@PutMapping("/edit/{id}")
halk Sicim güncelleme( @RequestBody Müşteri güncelleme Müşterisi, @PathVariable Tamsayı kimliği){
geri dönmek customerRepository.findById (id)
.map (müşteri -> {
client.setName (updateCustomer.getName());
client.setEmail (updateCustomer.getEmail());
clientRepository.save (müşteri);
geri dönmek"Müşteri bilgileri başarıyla güncellendi!";
}).orElseGet(() -> {
geri dönmek"Bu müşteri mevcut değil";
});
}
// müşteriyi sil
@DeleteMapping("sil/{id}")
halk Sicim silmek(@PathVariable("İD")tamsayı kimliği) {
customerRepository.deleteById (id);
geri dönmek"Müşteri başarıyla silindi!";
}
}
Yukarıdaki denetleyici, CrudRepository'den beş tanesini kullanarak REST API'yi CRUD işlemleriyle donatır.
- @RestController: Bu açıklama iki amaca hizmet eder. Bileşen taramasıyla keşif için bir sınıfı işaretler. Ayrıca Spring'e, bu sınıftaki tüm yöntemler için dönüş değerini yanıt gövdesine yazmasını söyler.
- @RequestMapping: Denetleyicinin işleyeceği temel istek modelini tanımlar. Dolayısıyla, bu denetleyici "/müşterilere" yönelik tüm istekleri işleyecektir.
- @ResponseBody: Bir yöntemin tüm varlığı döndürmesine izin verir.
- @RequestBody: İstek gövdesini bir nesneye dönüştürmenizi sağlar.
- @RequestParam: Bir özelliği bir nesneden ayırmanıza izin verir.
- @PathVariable: Bir istek değerini bir yer tutucuya eşlemenizi sağlar. Delete yöntemine verilen ID'yi veri tabanındaki mevcut bir değerle eşler.
- @PostMapping: Kaynak oluşturmanıza izin verir.
- @GetMapping: Kaynak verilerini okumanızı sağlar.
- @PutMapping: Kaynakları güncellemenizi sağlar.
- @DeleteMapping: Kaynakları silmenizi sağlar.
Veritabanını Uygulamanıza Bağlama
Bir veritabanını herhangi bir Spring uygulamasına bağlamak için, uygulama.özellikleri kaynaklar klasörünün altındaki dosya. Bu dosya başlangıçta boş olduğundan, kullanmayı düşündüğünüz veritabanı için uygun özelliklerle doldurabilirsiniz. Bu uygulama bir MySQL veritabanı kullanacağı için application.properties dosyası aşağıdaki verileri içerecektir:
spring.jpa.hibernate.ddl-auto=güncelleme
spring.jpa.open-in-view=yanlış
spring.datasource.url=jdbc: mysql://${MYSQL_HOST: localhost}:3306/onlineshopaholics
spring.datasource.username=root
spring.datasource.password=güvenli
spring.datasource.driver-class-name=com.mysql.cj.jdbc. sürücü
Yukarıdaki veriler, bu uygulamanın onlineshopaholics adlı bir MySQL veritabanına "root" kullanıcı adı ve parola olarak "securepw" ile bağlanacağını gösteriyor. Bir sonraki adımınız, MySQL'de veritabanı ve müşteri tablosu oluşturmaktır.
İstek Oluşturma
REST API'nizi test etmek için kullanabileceğiniz birçok araç vardır. Postman, popüler bir REST API test aracıdırve oluşturduğunuz basit API'yi test etmek için kullanabilirsiniz. MySQL tablosunu oluşturduktan ve Spring uygulamasını çalıştırdıktan sonra, Postman'ı başlatabilir ve dört istek fiilini deneyebilirsiniz.
GÖNDERİ İsteği
Bu istek, REST API'yi kullanarak yeni müşteriler oluşturmanıza izin verecektir. Bu isteği tamamlamak için gönderi isteğinizin başlıklar bölümüne gitmeniz ve yeni bir başlık (İçerik Türü) oluşturmanız gerekir. JSON kullanarak yeni müşteriler oluşturacağınız için bu başlığın değerini application/json olarak ayarlamalısınız.
İsteğin gövdesinde, türü ham olarak değiştirmeniz ve JSON'unuzu eklemeniz gerekir. Ardından, gönderi URL'sini eklemeniz gerekir:
İsteğin gönderilmesi aşağıdaki yanıtı döndürür:
İsteğin başarılı olduğunu ve yeni müşterinin de bir kimliği olduğunu görebilirsiniz.
İstek Al
Artık bir müşteriniz olduğuna göre, onu tüm müşterileri döndüren get isteği ile görüntüleyebilirsiniz:
Veya kimliğe göre her müşteri:
PUT İsteği
Janet'i yeni bir soyadı ve e-posta ile güncelleyebilirsiniz.
İsteği sil
Janet'i veritabanından da silebilirsiniz.
Spring REST API'nizi JUnit Kullanarak Test Edin
Spring Boot ile, Spring'in test dosyasını kullanarak herhangi bir uygulamayı (REST API'leri dahil) test edebilirsiniz. Spring Boot için yazılım testi önemlidir. Başlatılan her Spring uygulaması, test için JUnit kullanır ve REST API'lerinize istek göndermenize izin verir.