Java'da SpringMVC ile REST API nasıl yapılır

İçindekiler

Bu eğitim öğretecek SpringMVC kullanarak Java'da kısa bir REST API nasıl yapılır. GET ve POST komutlarını, DELETE ve PUT işlemlerini göreceğiz, uygulama için yapmanız uygun olacaktır. Başlamadan önce, İlkbaharda programlama için iyi bir IDE olan Eclipse STS'yi indirmenizi tavsiye ederim, projelerimizi oluşturmamızı çok daha kolay hale getiriyor:

ECLIPSE STS'İ İNDİR

Not1.8 sürümünü daha iyi seçerseniz, Java'nın kurulu olması gerekir.

Akılda tutulması gereken bazı genel şeyler

  • Gelen taleplere cevap vermekle görevli bir controller'ımız var, controller olarak görev yapan sınıfın not edilmesi gerekiyor. @RestController.
  • Her URL için bir yöntem uygulamamız gerekiyor. Her yöntem ek açıklama ile gitmek zorunda kalacak @RequestMapping katıldığı URL ve isteğin yöntemi ile birlikte istenen nesneyi de döndürür.

Şimdi bir örnek göreceğiz, içinde bir Person sınıfımız ve PersonController kişisi için bir denetleyicimiz olacak.

1. projeyi başlat
STS'yi açıp yeni bir proje veriyoruz"Bahar Projesi Başlatıcı”, Seçenekleri ve adı yapılandırıyoruz ve Sonraki, aşağıdaki resimde gördüğünüz gibi bırakacağım:

BÜYÜT

[color = rgb (169.169.169)] Resmi büyütmek için üzerine tıklayın [/ color]

Bir sonraki ekranda kullanacağımız seçenekleri seçmeliyiz, her şeye dokunmadan bırakacağız ve tıklıyoruz. Sona ermek ve projeyi zaten oluşturduk, aşağıdaki yapıya sahip olacağız (Kullanacağımız 2 sınıfı zaten oluşturduğumu ve yakalamanın STS'den olmadığını unutmayın):

içinde göreceğiz kaynak / ana / java Paketin içinde zaten oluşturulmuş bir sınıf var ve aşağıdaki kodu içeriyor:

 @SpringBootApplication genel sınıfı ExampleApiApplication {genel statik geçersiz ana (String [] argümanlar) {SpringApplication.run (Application.class, argümanlar); }} 
Bu sınıfı olduğu gibi bırakıyoruz, örneğimizi çalıştırmamıza yardımcı oluyor. şimdi sınıfa gidelim pom.xml ve aşağıdaki kodun olup olmadığını kontrol ederiz, yoksa basitçe ekliyoruz:
 org.springframework.boot spring-boot-starter-parent 1.3.3.RELEASE org.springframework.boot spring-boot-starter-web 
NotBu dosyayı kaydederken projenizi maven ile güncellemeniz gerekebilir, STS'de bunu yapma seçeneğiniz vardır (ALT + F5).

Şimdi oluşturduğumuz sınıfların nasıl göründüklerini göreceğiz.

2. Kişi sınıfı
Önce kodu koyuyoruz sonra anlatılıyor.

 genel sınıf Perona {özel uzun kimlik = -1; özel Dize adı; özel int yaş; public Kişi () {} public Kişi (Dize adı, int yaş) {süper (); this.name = isim; this.age = yaş; } public String getName () {dönüş adı; } public void setName (Dize adı) {bu.name = ad; } public int getAge () {dönüş yaşı; } public void setAge (int e) {yaş = e; } public long getId () {return id; } public void setId (uzun kimlik) {this.id = kimlik; }} 
Bu sınıfı anlamak zor değil, tek bilmeniz gereken, her bir özniteliğin get ve setine ve ayrıca parametresiz yapıcıya ihtiyacımız olduğu, çünkü bunlar denetleyici tarafından kullanılacaktır, bu nedenle birçok parametre ve Spring ile çalışmaktan kaçınacağız. bunları enjekte edecek ve nesneyi yaratacaktır.

3. PersonaController sınıfı
Yine ilk kısım olarak kod ve ardından açıklama.

 @RestController genel sınıf PersonController {özel Harita kişileri = yeni ConcurrentHashMap (); özel Uzun kullanılmışID = 0; @RequestMapping (değer = "/ kişi", yöntem = RequestMethod.GET) public Collection damePeople () {return people.values ​​​​(); } @RequestMapping (değer = "/ kişi", yöntem = RequestMethod.POST) @ResponseStatus (HttpStatus.CREATED) public Kişi addPersona (@RequestBody Kişi p) {idUsado ++; p.setId (idUsado); insanlar.put (idUsado, s); dönüş p; } @RequestMapping (değer = "/ insanlar / {id}", yöntem = RequestMethod.GET) public ResponseEntity getPersona (@PathVariable uzun id) {Person p = people.get (id); if (p! = null) yeni ResponseEntity (p, HttpStatus.OK) döndürür; yeni ResponseEntity döndür (HttpStatus.NOT_FOUND); }}
Ne bir veritabanı kullanmayacağız Bir harita oluşturuyoruz, eğer bir veritabanımız olsaydı, bu onun deposuyla değiştirilirdi ve idUsado değişkeni gerekli olmazdı, ancak DB eklemek öğreticinin amacı değildir.
Açıklamanın içinde İstekEşleme Biz de bir metoda sahip olduğumuzu görüyoruz, varsayılan olarak GET'dir, bu yüzden bu metodlarda onu eklemek gerekli olmaz, ama zarar vermez.

3 yöntemimiz var
insanlara verYapacağı şey, haritamızdaki tüm insanları geri döndürmek (insanlar.değerler ()). Önemli bir komplikasyonu yoktur.

kişi ekleKoleksiyonumuza bir kişi eklemek için kullanılır, elimizdeki parametrenin açıklamalı olduğunu görebilirsiniz. @RequestBody, müşteriden aldığımız şeydir (isteğin gövdesi). açıklama

 @ResponseStatus (HttpStatus.CREATED)
Yanıt kodu olarak bir 201 döndürmek üzere ayarlanmıştır. Her id denildiğinde id denilince birer birer arttığı, yani benzersiz olduğu ve kişiye atandığı, daha sonra haritaya eklendiği ve son olarak işlevin yanıt gövdesinin aynı olduğu vücutta görülebilir. kişi.

getPersonİstenen kişi id üzerinden tarafımıza iade edilecektir. Burada fonksiyonun geri döndüğüne sahibiz

 YanıtVarlığı
Bu, geri dönmek için bir tamam aşkım ve varsa kişi veya bir BULUNAMADI. Buradaki parametre ile açıklamalı @PathVariable, bu parametrenin değerine sahip olacaktır {İD} RequestMapping'de gördüğünüz ve URL'ye koyduğumuz şeydir, örneğin / people / 1, 1'deki id ile bu işlevi çağırır.

NotAşağıda gösterdiğim gibi, RequestMapping ek açıklamasını sınıfın hemen üstüne koyabilirsiniz:

 @RestController @RequestMapping ("/ insanlar") genel sınıf PersonaController {…}
Bunu yaparsanız, her yöntemde insanları tekrar etmekten kaçınırsınız ve basitçe şunları koyabilirsiniz:
 @RequestMapping (değer = "/", yöntem = RequestMethod.GET) 
Birkaç yöntem varsa, buna değmeyebilir, ancak çoğu için kesinlikle en iyi seçenektir.

Bu küçük API'yi bitirdik.

4. proje nasıl çalıştırılır
Projeyi çalıştırmak için projenizi seçin, menü çubuğunda yeşil bir daire içinde beyaz bir üçgen göreceksiniz (elclipse'deki olağan çalışma), sağdaki küçük siyah üçgene tıklayın, gidin rünler ve üzerine tıklayın Bahar Önyükleme Uygulaması.

BÜYÜT

[color = # a9a9a9] Resmi büyütmek için üzerine tıklayın [/ color]

Şimdi örneği genişletmek istiyorsanız, istekleri sunma yöntemlerini eklemenizi öneririm. KOY Y SİLMEK, değiştirilecek kişinin kimliğini bilmeniz gerekecek, böylece onu son işlevdeki gibi alacaksınız ve PUT'ta ayrıca POST işlevinde yaptığımız gibi verileri göndermeniz gerekecek.

İstersen REST API'nizi test edin istekte bulunmak için bir istemciyi programlamak zorunda kalmadan postacı kullanabilirsin, bu bir Google Chrome eklentisidir:

Burada, istediğiniz istek türünü seçebilir, kimlik doğrulama gerektiriyorsa, gönderilmesi gereken başlıkları ve gövdeyi vb. doldurabilirsiniz. Çok eksiksiz bir programdır.

BÜYÜT

[color = # a9a9a9] Resmi büyütmek için üzerine tıklayın [/ color]

Örneğin, API'deki tüm kişilerin localhost'ta çalışmasını ve 80 numaralı bağlantı noktasını dinlemesini sağlamak için bir alma isteği:

Bu Eğitimi beğendiniz ve yardım ettiniz mi?Yazara olumlu puan vermek için bu düğmeye basarak yazarı ödüllendirebilirsiniz.

Arkadaşlarınızla sayfasını paylaşan sitenin gelişimine yardımcı olacak

wave wave wave wave wave