Akronüüm REST tähistab REpresentational State Transfer, API aga rakenduste programmeerimisliidest. Koos viitavad need REST API-le. REST API on teenus, mis edastab päringuid ja vastuseid kahe tarkvarasüsteemi vahel REST-arhitektuuri alusel.
REST-arhitektuur loob veebiteenuseid, millele pääseb ligi URL-ide kaudu, kasutades ühte neljast päringuverbist: POST, GET, PUT ja DELETE. Seega võiks öelda, et REST API on tarkvara, mis võimaldab teil URL-ide kaudu ressursse luua, lugeda, värskendada ja kustutada.
Saate õppida, kuidas Spring Booti abil luua REST API-d.
Spring Boot rakenduse lähtestamine
Esimene asi, mida peaksite tegema, on tutvuge kevade põhitõdedega ja seadistage rakendus Spring Boot. Peate siiski sõltuvusi muutma. Lisaks veebisõltuvusele peate hankima Spring Data Java Persistent API (JPA) sõltuvuse ja draiveri andmebaasi jaoks, mida kavatsete kasutada (see rakendus kasutab MySQL-i).
Selle REST API jaoks vajate kontrollerit, mudelit ja hoidlat. Seega on REST API-l järgmine failistruktuur:
Mudeli loomine
Esimene klass, mille peate looma, on kliendimudel, mis salvestab andmeloogika.
pakett com.onlineshopaholics.api.model;
importida jakarta.püsivus. Veerg;
importida jakarta.püsivus. Üksus;
importida jakarta.püsivus. GeneratedValue;
importida jakarta.püsivus. GenerationType;
importida jakarta.püsivus. Id;
importida jakarta.püsivus. Tabel;@Tabel(nimi ="klient")
@Entity
avalikklassKlient{
@Id
@GeneratedValue(strateegia = GenerationType. AUTO)
privaatne Täisarv id;@Veerg(nimi ="Kliendi nimi")
privaatne Stringi nimi;privaatne String email;
avalik Täisarv getId(){
tagasi id;
}avaliktühinesetId(Täisarv id){
see.id = id;
}avalik String getName(){
tagasi nimi;
}avaliktühinesetName(stringi nimi){
see.nimi = nimi;
}avalik String saada meili(){
tagasi email;
}
avaliktühinesetEmail(String email){
see.email = email;
}
}
Ülaltoodud kliendiklassist näete, et igal kliendil on ID, nimi ja e-posti aadress. Märkate ka mitmeid märkusi, millel on erinevad eesmärgid.
- @Entity: deklareerib kliendiklassi JPA olemina. See tähendab, et JPA kasutab klassi välju relatsiooniandmebaasis veergude loomiseks.
- @Tabel: määrab kliendi mudeliklassiga vastendatava tabeli nime.
- @Id: tähistab atribuuti, mis tuvastab olemi andmebaasis unikaalselt.
- @GeneratedValue ja @GenerationType: need töötavad koos, et määrata automaatse genereerimise strateegia välja jaoks, millega see seostub. Seega loob ID väli automaatselt kordumatu väärtuse iga kord, kui loote uue kliendi.
- @Column: tähistab atribuuti, mis vastendatakse andmebaasi veeruga. Seega seostatakse nimeatribuut andmebaasis kliendinime veeruga.
Hoidla loomine
See hoidla võimaldab teil suhelda andmebaasis olevate kliendiandmetega.
pakett com.onlineshopaholics.api.repository;importida org.springframework.data.repository. CrudRepository;
importida com.onlineshopaholics.api.model. Klient;
avalikliidesKliendihoidlaulatubCrudRepository<Klient, Täisarv>{}
Klientide hoidla laieneb Spring’s CrudRepositoy liides, edastades sellele kliendi mudeliklassi koos olemi kordumatu identifikaatori tüübiga Integer.
CrudRepository liides pakub juurdepääsu enam kui 10 toimingule, sealhulgas üldistele CRUD-meetoditele, mida vajate REST API jaoks. Seega, kuna CrudRepository määrab juba vajalikud meetodid, pole vaja neid CustomerRepository liideses selgesõnaliselt deklareerida.
Kontrolleri loomine
Kontroller võimaldab teil mudeli ja hoidla abil andmebaasis olevaid andmeid värskendada.
pakett com.onlineshopaholics.api.controller;importida java.util. valikuline;
importida org.springframework.beans.factory.annotation. Automaatne juhtmestik;
importida org.springframework.web.bind.annotation. DeleteMapping;
importida org.springframework.web.bind.annotation. GetMapping;
importida org.springframework.web.bind.annotation. PathVariable;
importida org.springframework.web.bind.annotation. PostMapping;
importida org.springframework.web.bind.annotation. PutMapping;
importida org.springframework.web.bind.annotation. RequestBody;
importida org.springframework.web.bind.annotation. RequestMapping;
importida org.springframework.web.bind.annotation. RequestParam;
importida org.springframework.web.bind.annotation. ResponseBody;
importida org.springframework.web.bind.annotation. RestController;
importida com.onlineshopaholics.api.model. Klient;
importida com.onlineshopaholics.api.repository. Kliendihoidla;
@RestController
@RequestMapping("/kliendid")
avalikklassKliendikontroller{
@Autowired
privaatne CustomerRepository customerRepository;
// looge uus klient
@PostMapping("/lisama")
avalik Klient lisa uus klient(@RequestBody Customer newCustomer){
Kliendi kasutaja = uus Klient();
user.setName (newCustomer.getName());
user.setEmail (newCustomer.getEmail());
customerRepository.save (kasutaja);
tagasi kasutaja;
}
// vaata kõiki kliente
@GetMapping("Vaata kõiki")
avalik@ResponseBodyKorduvhankige kõik kliendid() {
tagasi klientRepository.findAll();
}
// vaata konkreetset klienti
@GetMapping("view/{id}")
avalik Valikulinehankige klient(@PathVariable Integer id) {
tagasi customerRepository.findById (id);
}
// olemasoleva kliendi värskendamine
@PutMapping("/redigeeri/{id}")
avalik String värskendada( @RequestBody Customer updateCustomer, @PathVariable Integer id){
tagasi customerRepository.findById (id)
.map (klient -> {
customer.setName (updateCustomer.getName());
customer.setEmail (updateCustomer.getEmail());
customerRepository.save (klient);
tagasi"Kliendi andmed on edukalt uuendatud!";
}).orElseGet(() -> {
tagasi"Seda klienti pole olemas";
});
}
// kliendi kustutamine
@DeleteMapping("kustuta/{id}")
avalik String kustutada(@PathVariable("id")Täisarv id) {
customerRepository.deleteById (id);
tagasi"Klient on edukalt kustutatud!";
}
}
Ülaltoodud kontroller varustab REST API-d CRUD-toimingutega, kasutades viit CrudRepositoryst
- @RestController: sellel annotatsioonil on kaks eesmärki. See tähistab komponentide skaneerimisega avastamiseks klassi. Samuti käsib see Spring kirjutada vastuse kehasse kõigi selle klassi meetodite tagastusväärtus.
- @RequestMapping: määrab algtaseme päringu mustri, mida kontroller käsitleb. Seega käsitleb see kontroller kõiki päringuid „/klientidele”.
- @ResponseBody: võimaldab meetodil tagastada terve olemi.
- @RequestBody: võimaldab teil teisendada päringu keha objektiks.
- @RequestParam: võimaldab teil eraldada objektist ühe omaduse.
- @PathVariable: võimaldab vastendada päringu väärtuse kohahoidjale. See vastendab kustutamismeetodile antud ID andmebaasis olemasoleva väärtusega.
- @PostMapping: võimaldab luua ressursse.
- @GetMapping: võimaldab lugeda ressursiandmeid.
- @PutMapping: võimaldab teil ressursse värskendada.
- @DeleteMapping: võimaldab teil ressursse kustutada.
Andmebaasi ühendamine teie rakendusega
Andmebaasi ühendamiseks mis tahes Spring-rakendusega peate kasutama rakendus.omadused faili ressursside kausta all. See fail on algselt tühi, nii et saate selle täita kasutatava andmebaasi jaoks sobivate atribuutidega. See rakendus kasutab MySQL-i andmebaasi, nii et fail application.properties sisaldab järgmisi andmeid:
spring.jpa.hibernate.ddl-auto=värskenda
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. Juht
Ülaltoodud andmed näitavad, et see rakendus loob ühenduse MySQL-i andmebaasiga, mida nimetatakse onlineshopaholicsiks ja mille parooliks on "root" kasutajanimi ja "securepw". Järgmine samm on andmebaasi ja klienditabeli loomine MySQL-is.
Taotluste loomine
REST API testimiseks saate kasutada palju tööriistu. Postman on populaarne REST API testimise tööriistja saate seda kasutada enda loodud lihtsa API testimiseks. Pärast MySQL-i tabeli loomist ja rakenduse Spring käivitamist saate käivitada Postmani ja katsetada nelja päringuverbiga.
POSTITUSE taotlus
See taotlus võimaldab teil REST API abil uusi kliente luua. Selle taotluse täitmiseks peate minema oma postitustaotluse päiste jaotisesse ja looma uue päise (sisutüüp). Peaksite selle päise väärtuseks määrama rakenduse/jsoni, kuna loote JSON-i abil uusi kliente.
Taotluse sisus peate muutma tüübi töötlemata kujul ja sisestama oma JSON-i. Seejärel peate sisestama postituse URL-i:
Taotluse saatmisel saadetakse järgmine vastus:
Näete, et päring õnnestus ja uuel kliendil on ka id.
HANGI taotlus
Nüüd, kui teil on klient, saate seda vaadata hankimistaotlusega, mis tagastab kõik kliendid:
Või iga klient ID järgi:
PUT taotlus
Saate Janetit värskendada uue perekonnanime ja e-posti aadressiga.
Kustuta taotlus
Samuti saate Janeti andmebaasist kustutada.
Testige oma Spring REST API-t JUniti abil
Spring Booti abil saate testida mis tahes rakendust (sh REST API-sid), kasutades Springi testfaili. Tarkvara testimine on Spring Booti jaoks oluline. Iga lähtestatud Spring rakendus kasutab testimiseks JUniti ja võimaldab teil saata päringuid oma REST API-dele.