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: ää).
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
- @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.