Bralci, kot ste vi, pomagajo podpirati MUO. Ko opravite nakup prek povezav na našem spletnem mestu, lahko zaslužimo partnersko provizijo. Preberi več.

Akronim REST pomeni REpresentational State Transfer, medtem ko API pomeni Application Programming Interface. Skupaj se nanašata na API REST. REST API je storitev, ki prenaša zahteve in odgovore med dvema programskima sistemoma v arhitekturi REST.

Arhitektura REST gradi spletne storitve, ki so dostopne prek URL-jev z uporabo enega od štirih glagolov zahteve: POST, GET, PUT in DELETE. Torej bi lahko rekli, da je REST API programska oprema, ki vam omogoča ustvarjanje, branje, posodabljanje in brisanje virov prek URL-jev.

Naučite se, kako ustvariti REST API z uporabo programa Spring Boot.

Inicializacija aplikacije Spring Boot

Prva stvar, ki jo morate storiti, je se seznanite z osnovami pomladi in nastavite aplikacijo Spring Boot. Vendar boste morali spremeniti odvisnosti. Poleg spletne odvisnosti boste morali pridobiti odvisnost Spring Data Java Persistent API (JPA) in gonilnik za bazo podatkov, ki jo nameravate uporabiti (ta aplikacija bo uporabljala MySQL).

instagram viewer

Za ta REST API boste potrebovali krmilnik, model in repozitorij. Tako bo API REST imel naslednjo strukturo datotek:

Ustvarjanje modela

Prvi razred, ki ga boste morali ustvariti, je model stranke, ki shranjuje logiko podatkov.

paket com.onlineshopaholics.api.model;

uvoz jakarta.vztrajnost. stolpec;
uvoz jakarta.vztrajnost. Entiteta;
uvoz jakarta.vztrajnost. GeneratedValue;
uvoz jakarta.vztrajnost. GenerationType;
uvoz jakarta.vztrajnost. ID;
uvoz jakarta.vztrajnost. miza;

@Miza(ime="stranka")
@Entiteta
javnostirazredStranka{
@Id
@GeneratedValue(strategija = GenerationType. SAMODEJNO)
zasebno ID celega števila;

@Stolpec(ime="Ime stranke")
zasebno Ime niza;

zasebno Niz e-pošte;

javnosti Celo število getId(){
vrnitev id;
}

javnostiprazninasetId(ID celega števila){
to.id = id;
}

javnosti Vrvica getName(){
vrnitev ime;
}

javnostiprazninasetName(Ime niza){
to.name = ime;
}

javnosti Vrvica getEmail(){
vrnitev E-naslov;
}

javnostiprazninasetEmail(String email){
to.email = e-pošta;
}
}

Iz zgornjega razreda strank boste videli, da bo vsaka stranka imela ID, ime in e-poštni naslov. Opazili boste tudi več opomb, ki služijo različnim namenom.

  • @Entity: razglasi razred stranke kot entiteto JPA. To pomeni, da bo JPA uporabil polja v razredu za ustvarjanje stolpcev v relacijski bazi podatkov.
  • @Table: Določi ime tabele, ki bo preslikana v razred modela stranke.
  • @Id: Označuje lastnost, ki bo enolično identificirala entiteto v bazi podatkov.
  • @GeneratedValue in @GenerationType: delujeta skupaj, da določita strategijo samodejnega ustvarjanja za polje, s katerim je povezana. Tako bo polje ID samodejno ustvarilo edinstveno vrednost vsakič, ko ustvarite novo stranko.
  • @Column: Označuje lastnost, ki se preslika v stolpec v bazi podatkov. Torej se bo lastnost name preslikala v stolpec customername v bazi podatkov.

Ustvarjanje repozitorija

To skladišče vam bo omogočilo interakcijo s podatki o strankah v bazi podatkov.

paket com.onlineshopaholics.api.repository;

uvoz org.springframework.data.repository. CrudRepository;
uvoz com.onlineshopaholics.api.model. Stranka;

javnostivmesnikCustomerRepositoryse raztezaCrudRepository<Stranka, Celo število>{}

Repozitorij strank se razširi Spring's CrudRepositoy vmesnik, ki mu posreduje razred modela stranke skupaj z vrsto edinstvenega identifikatorja za entiteto, Integer.

Vmesnik CrudRepository omogoča dostop do več kot 10 operacij, vključno z generičnimi metodami CRUD, ki jih boste potrebovali za REST API. Torej, ker CrudRepository že definira metode, ki jih boste potrebovali, jih ni treba izrecno deklarirati v vmesniku CustomerRepository.

Ustvarjanje krmilnika

Krmilnik vam omogoča posodabljanje podatkov v vaši bazi podatkov z uporabo modela in repozitorija.

paket com.onlineshopaholics.api.controller;

uvoz java.util. Neobvezno;

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

uvoz com.onlineshopaholics.api.model. Stranka;
uvoz com.onlineshopaholics.api.repository. CustomerRepository;

@RestController
@RequestMapping("/stranke")
javnostirazredCustomerController{
@Autowired
zasebno CustomerRepository customerRepository;

// ustvari novo stranko
@PostMapping("/dodaj")
javnosti Stranka addNewCustomer(@RequestBody Customer newCustomer){
Uporabnik stranke = novo Stranka();
user.setName (newCustomer.getName());
user.setEmail (newCustomer.getEmail());
customerRepository.save (uporabnik);
vrnitev uporabnik;
}

// ogled vseh strank
@GetMapping("Poglej vse")
javnosti@ResponseBodyPonovljivogetAllCustomers(){
vrnitev customerRepository.findAll();
}

// ogled določene stranke
@GetMapping("pogled/{id}")
javnosti NeobveznogetCustomer(@PathVariable Integer id){
vrnitev customerRepository.findById (id);
}

// posodobite obstoječo stranko
@PutMapping("/uredi/{id}")
javnosti Vrvica nadgradnja( @RequestBody Customer updateCustomer, @PathVariable Integer id){
vrnitev customerRepository.findById (id)
.map (stranka -> {
customer.setName (updateCustomer.getName());
customer.setEmail (updateCustomer.getEmail());
customerRepository.save (stranka);
vrnitev"Podatki o stranki so bili uspešno posodobljeni!";
}).orElseGet(() -> {
vrnitev"Ta stranka ne obstaja";
});
}

// izbriši stranko
@DeleteMapping("izbriši/{id}")
javnosti Vrvica izbrisati(@PathVariable("id")ID celega števila) {
customerRepository.deleteById (id);
vrnitev"Stranka je bila uspešno izbrisana!";
}
}

Zgornji krmilnik opremi REST API z operacijami CRUD z uporabo petih CrudRepository metode vmesnika (vsaka je dodeljena določeni metodi). Krmilnik uporablja tudi več pomembnih opomb Spring, ki mu omogočajo izvajanje njegovih funkcij.

  • @RestController: Ta opomba ima dva namena. Označuje razred za odkrivanje s pregledovanjem komponent. Springu tudi sporoči, naj vrnjeno vrednost za vse metode v tem razredu zapiše v telo odgovora.
  • @RequestMapping: definira osnovni vzorec zahteve, ki ga bo obravnaval krmilnik. Torej bo ta krmilnik obravnaval vse zahteve za »/kupce«.
  • @ResponseBody: dovoljuje, da metoda vrne celotno entiteto.
  • @RequestBody: Omogoča pretvorbo telesa zahteve v objekt.
  • @RequestParam: Omogoča izolacijo ene lastnosti od predmeta.
  • @PathVariable: Omogoča preslikavo vrednosti zahteve v ogrado. Preslika ID, ki je bil dodeljen metodi brisanja, z obstoječo vrednostjo v bazi podatkov.
  • @PostMapping: omogoča ustvarjanje virov.
  • @GetMapping: Omogoča branje podatkov o virih.
  • @PutMapping: Omogoča posodobitev virov.
  • @DeleteMapping: Omogoča brisanje virov.

Povezovanje zbirke podatkov z vašo aplikacijo

Če želite povezati bazo podatkov s katero koli aplikacijo Spring, boste morali uporabiti aplikacija.lastnosti datoteko v mapi virov. Ta datoteka je sprva prazna, zato jo lahko napolnite z ustreznimi lastnostmi za bazo podatkov, ki jo nameravate uporabiti. Ta aplikacija bo uporabljala bazo podatkov MySQL, tako da bo datoteka application.properties vsebovala naslednje podatke:

spring.jpa.hibernate.ddl-auto=posodobitev
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. Voznik

Zgornji podatki kažejo, da se bo ta aplikacija povezovala z bazo podatkov MySQL, imenovano onlineshopaholics, z uporabniškim imenom »root« in geslom »securepw«. Vaš naslednji korak je ustvariti bazo podatkov in tabelo strank v MySQL.

Ustvarjanje zahtev

Obstaja veliko orodij, s katerimi lahko preizkusite API REST. Postman je priljubljeno orodje za testiranje REST APIin ga lahko uporabite za testiranje preprostega API-ja, ki ste ga zgradili. Ko ustvarite tabelo MySQL in zaženete aplikacijo Spring, lahko zaženete Postman in eksperimentirate s štirimi glagoli zahteve.

POST Zahteva

Ta zahteva vam bo omogočila ustvarjanje novih strank z uporabo API-ja REST. Če želite dokončati to zahtevo, boste morali iti v razdelek z glavami vaše zahteve za objavo in ustvariti novo glavo (Vrsta vsebine). Vrednost te glave bi morali nastaviti na application/json, saj boste ustvarili nove stranke z JSON.

V telesu zahteve boste morali spremeniti vrsto v surovo in vstaviti svoj JSON. Nato boste morali vstaviti URL objave:

Pošiljanje zahteve bo vrnilo naslednji odgovor:

Vidite lahko, da je bila zahteva uspešna, nova stranka pa ima tudi ID.

PRIDOBITE zahtevo

Zdaj, ko imate stranko, si jo lahko ogledate z zahtevo za pridobitev, ki vrne vse stranke:

Ali vsaka stranka po ID-ju:

PUT Zahteva

Janet lahko posodobite z novim priimkom in e-pošto.

IZBRIŠI zahtevo

Janet lahko tudi izbrišete iz baze podatkov.

Preizkusite API Spring REST z uporabo JUnit

S programom Spring Boot lahko preizkusite katero koli aplikacijo (vključno z API-ji REST) ​​z uporabo preskusne datoteke Spring. Testiranje programske opreme je pomembno za Spring Boot. Vsaka inicializirana aplikacija Spring uporablja JUnit za testiranje in vam omogoča pošiljanje zahtev API-jem REST.