Kaltaisesi lukijat auttavat tukemaan MUO: ta. Kun teet ostoksen käyttämällä sivustollamme olevia linkkejä, voimme ansaita kumppanipalkkion. Lue lisää.

Lyhenne REST tarkoittaa REpresentational State Transfer, kun taas API tarkoittaa Application Programming Interface. Yhdessä ne viittaavat REST-sovellusliittymään. REST API on palvelu, joka siirtää pyyntöjä ja vastauksia kahden ohjelmistojärjestelmän välillä REST-arkkitehtuurissa.

REST-arkkitehtuuri rakentaa verkkopalveluita, joihin pääsee URL-osoitteiden kautta käyttämällä yhtä neljästä pyyntöverbistä: POST, GET, PUT ja DELETE. Joten voisi sanoa, että REST API on ohjelmisto, jonka avulla voit luoda, lukea, päivittää ja poistaa resursseja URL-osoitteiden kautta.

Voit oppia luomaan REST API: n Spring Bootin avulla.

Spring Boot -sovelluksen alustaminen

Ensimmäinen asia, joka sinun pitäisi tehdä, on tutustu kevään perusteisiin ja määritä Spring Boot -sovellus. Sinun on kuitenkin muutettava riippuvuuksia. Verkkoriippuvuuden lisäksi sinun on hankittava Spring Data Java Persistent API (JPA) -riippuvuus ja käytettävän tietokannan ohjain (tämä sovellus käyttää MySQL: ää).

instagram viewer

Tätä REST-sovellusliittymää varten tarvitset ohjaimen, mallin ja arkiston. Joten REST API: lla on seuraava tiedostorakenne:

Mallin luominen

Ensimmäinen luokka, joka sinun on luotava, on asiakasmalli, joka tallentaa datalogiikan.

paketti com.onlineshopaholics.api.model;

tuonti jakarta.persistence. sarake;
tuonti jakarta.persistence. entiteetti;
tuonti jakarta.persistence. GeneratedValue;
tuonti jakarta.persistence. sukupolven tyyppi;
tuonti jakarta.persistence. Id;
tuonti jakarta.persistence. Pöytä;

@Pöytä(nimi ="asiakas")
@Entiteetti
julkinenluokkaaAsiakas{
@Id
@GeneratedValue(strategia = GenerationType. AUTO)
yksityinen Kokonaisluku id;

@Sarake(nimi ="Asiakkaan nimi")
yksityinen merkkijonon nimi;

yksityinen String sähköposti;

julkinen Kokonaisluku getId(){
palata id;
}

julkinenmitätönsetId(Kokonaislukutunnus){
Tämä.id = id;
}

julkinen merkkijono getName(){
palata nimi;
}

julkinenmitätönsetName(merkkijonon nimi){
Tämä.name = nimi;
}

julkinen merkkijono getEmail(){
palata sähköposti;
}

julkinenmitätönsetEmail(Sähköpostimerkkijono){
Tämä.email = sähköposti;
}
}

Yllä olevasta asiakasluokasta näet, että jokaisella asiakkaalla on tunnus, nimi ja sähköpostiosoite. Huomaat myös useita merkintöjä, jotka palvelevat eri tarkoituksia.

  • @Entity: Ilmoittaa asiakasluokan JPA-yksiköksi. Tämä tarkoittaa, että JPA käyttää luokan kenttiä luodakseen sarakkeita relaatiotietokantaan.
  • @Table: Määrittää taulukon nimen, joka yhdistetään asiakasmalliluokkaan.
  • @Id: Määrittää ominaisuuden, joka tunnistaa yksilöllisesti tietokannan kokonaisuuden.
  • @GeneratedValue ja @GenerationType: Nämä yhdessä määrittävät automaattisesti luodun strategian kentälle, johon se liittyy. Tunnuskenttä luo siis automaattisesti yksilöllisen arvon aina, kun luot uuden asiakkaan.
  • @Sarake: Määrittää ominaisuuden, joka liittyy tietokannan sarakkeeseen. Joten nimiominaisuus kartoitetaan tietokannan asiakasnimisarakkeeseen.

Arkiston luominen

Tämän arkiston avulla voit olla vuorovaikutuksessa tietokannassa olevien asiakastietojen kanssa.

paketti com.onlineshopaholics.api.repository;

tuonti org.springframework.data.repository. CrudRepository;
tuonti com.onlineshopaholics.api.model. Asiakas;

julkinenkäyttöliittymäAsiakasvarastoulottuuCrudRepository<Asiakas, Kokonaisluku>{}

Asiakasvarasto laajenee Kevään CrudRepositoy käyttöliittymä, välittää sille Asiakasmalli-luokan sekä kokonaisuuden yksilöllisen tunnisteen tyypin, Integer.

CrudRepository-liittymä tarjoaa pääsyn yli 10 toimintoon, mukaan lukien yleiset CRUD-menetelmät, joita tarvitset REST API: lle. Joten koska CrudRepository määrittää jo tarvitsemasi menetelmät, niitä ei tarvitse erikseen ilmoittaa CustomerRepository-käyttöliittymässä.

Ohjaimen luominen

Ohjaimen avulla voit päivittää tietokannassasi olevia tietoja mallin ja arkiston avulla.

paketti com.onlineshopaholics.api.controller;

tuonti java.util. Valinnainen;

tuonti org.springframework.beans.factory.annotation. Autowired;
tuonti org.springframework.web.bind.annotation. DeleteMapping;
tuonti org.springframework.web.bind.annotation. GetMapping;
tuonti org.springframework.web.bind.annotation. PathVariable;
tuonti org.springframework.web.bind.annotation. PostMapping;
tuonti org.springframework.web.bind.annotation. PutMapping;
tuonti org.springframework.web.bind.annotation. RequestBody;
tuonti org.springframework.web.bind.annotation. RequestMapping;
tuonti org.springframework.web.bind.annotation. RequestParam;
tuonti org.springframework.web.bind.annotation. ResponseBody;
tuonti org.springframework.web.bind.annotation. RestController;

tuonti com.onlineshopaholics.api.model. Asiakas;
tuonti com.onlineshopaholics.api.repository. Customer Repository;

@RestController
@RequestMapping("/Asiakkaat")
julkinenluokkaaCustomer Controller{
@Autowired
yksityinen CustomerRepository CustomerRepository;

// Luo uusi asiakas
@PostMapping("/lisätä")
julkinen Asiakas lisää Uusi asiakas(@RequestBody Customer newCustomer){
Asiakaskäyttäjä = Uusi Asiakas();
user.setName (newCustomer.getName());
user.setEmail (newCustomer.getEmail());
customerRepository.save (käyttäjä);
palata käyttäjä;
}

// Näytä kaikki asiakkaat
@GetMapping("näytä kaikki")
julkinen@ResponseBodyIteroitavissagetAllCustomers(){
palata customerRepository.findAll();
}

// tarkastele tiettyä asiakasta
@GetMapping("view/{id}")
julkinen ValinnainengetCustomer(@PathVariable Integer id){
palata customerRepository.findById (id);
}

// päivittää olemassa oleva asiakas
@PutMapping("/edit/{id}")
julkinen merkkijono päivittää( @RequestBody Customer updateCustomer, @PathVariable Integer id){
palata customerRepository.findById (id)
.map (asiakas -> {
customer.setName (updateCustomer.getName());
customer.setEmail (updateCustomer.getEmail());
customerRepository.save (asiakas);
palata"Asiakastiedot on päivitetty onnistuneesti!";
}).orElseGet(() -> {
palata"Tätä asiakasta ei ole olemassa";
});
}

// poista asiakas
@DeleteMapping("delete/{id}")
julkinen merkkijono poistaa(@PathVariable("id")Kokonaisluku tunnus) {
customerRepository.deleteById (id);
palata"Asiakas on poistettu onnistuneesti!";
}
}

Yllä oleva ohjain varustaa REST API: n CRUD-toiminnoilla käyttämällä viittä CrudRepositorysta rajapintamenetelmät (jokainen on määritetty tietylle menetelmälle). Ohjaimessa on myös useita tärkeitä jousimerkintöjä, joiden avulla se voi suorittaa tehtävänsä.

  • @RestController: Tällä merkinnällä on kaksi tarkoitusta. Se merkitsee komponenttien skannauksen avulla löydettävää luokkaa. Se myös käskee Springin kirjoittamaan palautusarvon kaikille tämän luokan menetelmille vastaustekstiin.
  • @RequestMapping: Määrittää peruspyyntömallin, jonka ohjain käsittelee. Joten tämä ohjain käsittelee kaikki pyynnöt "/asiakkaille".
  • @ResponseBody: Mahdollistaa menetelmän palauttaa kokonaisen entiteetin.
  • @RequestBody: Voit muuntaa pyynnön rungon objektiksi.
  • @RequestParam: Voit eristää yhden ominaisuuden objektista.
  • @PathVariable: Voit yhdistää pyynnön arvon paikkamerkkiin. Se kartoittaa poistomenetelmälle annetun tunnuksen tietokannassa olevaan arvoon.
  • @PostMapping: Voit luoda resursseja.
  • @GetMapping: Voit lukea resurssitietoja.
  • @PutMapping: Voit päivittää resursseja.
  • @DeleteMapping: Voit poistaa resursseja.

Tietokannan yhdistäminen sovellukseesi

Jos haluat yhdistää tietokannan mihin tahansa Spring-sovellukseen, sinun on käytettävä application.properties tiedosto resurssikansion alla. Tämä tiedosto on aluksi tyhjä, joten voit täyttää sen käytettävän tietokannan asianmukaisilla ominaisuuksilla. Tämä sovellus käyttää MySQL-tietokantaa, joten application.properties-tiedosto sisältää seuraavat tiedot:

spring.jpa.hibernate.ddl-auto=päivitys
spring.jpa.open-in-view=false
spring.datasource.url=jdbc: mysql://${MYSQL_HOST: localhost}:3306/onlineshopaholics
spring.datasource.username=root
spring.datasource.password=securepw
spring.datasource.driver-class-name=com.mysql.cj.jdbc. Kuljettaja

Yllä olevat tiedot osoittavat, että tämä sovellus muodostaa yhteyden MySQL-tietokantaan, jota kutsutaan onlineshopaholicsiksi, "root"-käyttäjänimellä ja "securepw" salasanalla. Seuraava askel on luoda tietokanta ja asiakastaulukko MySQL: ssä.

Pyyntöjen luominen

Voit testata REST-sovellusliittymääsi monilla työkaluilla. Postman on suosittu REST API -testaustyökalu, ja voit käyttää sitä testaamaan rakentamaasi yksinkertaista sovellusliittymää. Kun olet luonut MySQL-taulukon ja suorittanut Spring-sovelluksen, voit käynnistää Postmanin ja kokeilla neljää pyyntöverbiä.

POST-pyyntö

Tämän pyynnön avulla voit luoda uusia asiakkaita REST API: n avulla. Suorittaaksesi tämän pyynnön, sinun on siirryttävä lähetyspyyntösi otsikkoosioon ja luotava uusi otsikko (Content-Type). Sinun tulee asettaa tämän otsikon arvoksi application/json, koska luot uusia asiakkaita JSON: n avulla.

Pyynnön tekstiosassa sinun on vaihdettava tyypiksi raw ja lisättävä JSON. Sitten sinun on lisättävä viestin URL-osoite:

Pyynnön lähettäminen palauttaa seuraavan vastauksen:

Näet, että pyyntö onnistui ja uudella asiakkaalla on myös tunnus.

HAE Pyyntö

Nyt kun sinulla on asiakas, voit tarkastella sitä hakupyynnöllä, joka palauttaa kaikki asiakkaat:

Tai jokainen asiakas tunnuksella:

PUT-pyyntö

Voit päivittää Janetin uudella sukunimellä ja sähköpostiosoitteella.

POISTA pyyntö

Voit myös poistaa Janetin tietokannasta.

Testaa Spring REST -sovellusliittymääsi JUnitin avulla

Spring Bootin avulla voit testata mitä tahansa sovellusta (mukaan lukien REST API: t) Springin testitiedoston avulla. Ohjelmistojen testaus on tärkeää Spring Bootille. Jokainen alustettu Spring-sovellus käyttää JUnitia testaamiseen ja antaa sinun lähettää pyyntöjä REST-sovellusliittymiisi.