Čitatelia ako vy pomáhajú podporovať MUO. Keď uskutočníte nákup pomocou odkazov na našej stránke, môžeme získať pridruženú províziu. Čítaj viac.

Skratka REST znamená REpresentational State Transfer, zatiaľ čo API znamená Application Programming Interface. Spoločne odkazujú na REST API. REST API je služba, ktorá prenáša požiadavky a odpovede medzi dvoma softvérovými systémami na REST architektúre.

Architektúra REST vytvára webové služby, ktoré sú prístupné prostredníctvom adries URL pomocou jedného zo štyroch slovies požiadavky: POST, GET, PUT a DELETE. Dalo by sa teda povedať, že REST API je softvér, ktorý vám umožňuje vytvárať, čítať, aktualizovať a odstraňovať zdroje prostredníctvom adries URL.

Môžete sa naučiť, ako vytvoriť REST API pomocou Spring Boot.

Inicializácia aplikácie Spring Boot

Prvá vec, ktorú by ste mali urobiť, je zoznámte sa so základmi jari a nastavte aplikáciu Spring Boot. Budete však musieť zmeniť závislosti. Okrem webovej závislosti budete musieť získať závislosť Spring Data Java Persistent API (JPA) a ovládač pre databázu, ktorú chcete použiť (táto aplikácia bude používať MySQL).

instagram viewer

Pre toto REST API budete potrebovať ovládač, model a úložisko. Takže REST API bude mať nasledujúcu štruktúru súborov:

Vytvorenie modelu

Prvá trieda, ktorú budete musieť vytvoriť, je zákaznícky model, v ktorom je uložená dátová logika.

balík com.onlineshopaholics.api.model;

importovať jakarta.vytrvalosť. stĺpec;
importovať jakarta.vytrvalosť. Entita;
importovať jakarta.vytrvalosť. GeneratedValue;
importovať jakarta.vytrvalosť. GenerationType;
importovať jakarta.vytrvalosť. Id;
importovať jakarta.vytrvalosť. Stôl;

@Tabuľka(meno="zákazník")
@Entity
verejnostitriedaZákazník{
@Id
@GeneratedValue(stratégia = GenerationType. AUTO)
súkromné Integer id;

@Stĺpec(meno="Meno zákazníka")
súkromné Názov reťazca;

súkromné reťazec e-mailu;

verejnosti Celé číslo getId(){
vrátiť id;
}

verejnostineplatnésetId(Integer ID){
toto.id = id;
}

verejnosti Reťazec getName(){
vrátiť názov;
}

verejnostineplatnésetName(názov reťazca){
toto.meno = meno;
}

verejnosti Reťazec getEmail(){
vrátiť email;
}

verejnostineplatnésetEmail(reťazec e-mailu){
toto.email = email;
}
}

Z vyššie uvedenej triedy zákazníkov uvidíte, že každý zákazník bude mať ID, meno a e-mail. Všimnete si tiež niekoľko anotácií, ktoré slúžia na rôzne účely.

  • @Entity: Deklaruje triedu zákazníka ako entitu JPA. To znamená, že JPA použije polia v triede na vytvorenie stĺpcov v relačnej databáze.
  • @Tabuľka: Označuje názov tabuľky, ktorá sa priradí k triede modelu zákazníka.
  • @Id: Označuje vlastnosť, ktorá jedinečne identifikuje entitu v databáze.
  • @GeneratedValue a @GenerationType: Tieto spolupracujú pri špecifikovaní stratégie automatického generovania pre pole, s ktorým sa spája. Pole id teda automaticky vygeneruje jedinečnú hodnotu vždy, keď vytvoríte nového zákazníka.
  • @Stĺpec: Označuje vlastnosť, ktorá sa mapuje na stĺpec v databáze. Vlastnosť name sa teda namapuje na stĺpec customername v databáze.

Vytvorenie úložiska

Toto úložisko vám umožní interakciu s údajmi o zákazníkoch v databáze.

balík com.onlineshopaholics.api.repository;

importovať org.springframework.data.repository. CrudRepository;
importovať com.onlineshopaholics.api.model. Zákazník;

verejnostirozhranieCustomerRepositorypredlžujeCrudRepository<Zákazník, Celé číslo>{}

Úložisko zákazníkov sa rozširuje Spring's CrudRepositoy rozhranie, ktoré mu odovzdá triedu modelu zákazníka spolu s typom jedinečného identifikátora entity, Integer.

Rozhranie CrudRepository poskytuje prístup k viac ako 10 operáciám vrátane všeobecných metód CRUD, ktoré budete potrebovať pre REST API. Pretože CrudRepository už definuje metódy, ktoré budete potrebovať, nie je potrebné ich explicitne deklarovať v rozhraní CustomerRepository.

Vytvorenie ovládača

Kontrolér vám umožňuje aktualizovať údaje vo vašej databáze pomocou modelu a úložiska.

balík com.onlineshopaholics.api.controller;

importovať java.util. Voliteľné;

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

importovať com.onlineshopaholics.api.model. Zákazník;
importovať com.onlineshopaholics.api.repository. CustomerRepository;

@RestController
@RequestMapping("/zákazníci")
verejnostitriedaCustomerController{
@Autowired
súkromné CustomerRepository customerRepository;

// vytvoriť nového zákazníka
@PostMapping("/add")
verejnosti Zákazník addNewCustomer(@RequestBody Customer newCustomer){
Užívateľ zákazníka = Nový Zákazník();
user.setName (newCustomer.getName());
user.setEmail (newCustomer.getEmail());
customerRepository.save (používateľ);
vrátiť užívateľ;
}

// zobraziť všetkých zákazníkov
@GetMapping("zobraziť/všetko")
verejnosti@ResponseBodyIterovateľnégetAllCustomers(){
vrátiť customerRepository.findAll();
}

// zobrazenie konkrétneho zákazníka
@GetMapping("view/{id}")
verejnosti VoliteľnégetCustomer(@PathVariable Integer id){
vrátiť customerRepository.findById (id);
}

// aktualizovať existujúceho zákazníka
@PutMapping("/edit/{id}")
verejnosti Reťazec aktualizovať( @RequestBody Customer updateCustomer, @PathVariable Integer id){
vrátiť customerRepository.findById (id)
.map (zákazník -> {
customer.setName (updateCustomer.getName());
customer.setEmail (updateCustomer.getEmail());
customerRepository.save (zákazník);
vrátiť"Podrobnosti o zákazníkovi boli úspešne aktualizované!";
}).aleboElseGet(() -> {
vrátiť"Tento zákazník neexistuje";
});
}

// vymazať zákazníka
@DeleteMapping("delete/{id}")
verejnosti Reťazec vymazať(@PathVariable("id")ID celého čísla) {
customerRepository.deleteById (id);
vrátiť"Zákazník bol úspešne odstránený!";
}
}

Vyššie uvedený ovládač vybavuje REST API operáciami CRUD pomocou piatich z CrudRepository metódy rozhrania (každá je priradená konkrétnej metóde). Ovládač tiež používa niekoľko dôležitých anotácií Spring, ktoré mu umožňujú vykonávať jeho funkcie.

  • @RestController: Táto anotácia slúži na dva účely. Označuje triedu na zisťovanie skenovaním komponentov. Tiež hovorí Springovi, aby napísal návratovú hodnotu pre všetky metódy v tejto triede do tela odpovede.
  • @RequestMapping: Definuje základný vzor žiadosti, ktorý bude ovládač spracovávať. Tento kontrolór teda vybaví všetky požiadavky adresované „/zákazníkom“.
  • @ResponseBody: Umožňuje metóde vrátiť celú entitu.
  • @RequestBody: Umožňuje vám previesť telo požiadavky na objekt.
  • @RequestParam: Umožňuje izolovať jednu vlastnosť z objektu.
  • @PathVariable: Umožňuje namapovať hodnotu požiadavky na zástupný symbol. Mapuje ID pridelené metóde odstránenia s existujúcou hodnotou v databáze.
  • @PostMapping: Umožňuje vám vytvárať zdroje.
  • @GetMapping: Umožňuje vám čítať údaje o zdrojoch.
  • @PutMapping: Umožňuje vám aktualizovať zdroje.
  • @DeleteMapping: Umožňuje vám odstrániť zdroje.

Pripojenie databázy k vašej aplikácii

Ak chcete pripojiť databázu k akejkoľvek aplikácii Spring, budete musieť použiť aplikácie.vlastnosti súbor v priečinku zdrojov. Tento súbor je na začiatku prázdny, takže ho môžete naplniť príslušnými vlastnosťami pre databázu, ktorú chcete použiť. Táto aplikácia bude používať databázu MySQL, takže súbor application.properties bude obsahovať nasledujúce údaje:

spring.jpa.hibernate.ddl-auto=aktualizácia
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. Vodič

Vyššie uvedené údaje ukazujú, že táto aplikácia sa bude pripájať k databáze MySQL s názvom onlineshopaholics s používateľským menom „root“ a heslom „securepw“. Ďalším krokom je vytvorenie databázy a tabuľky zákazníkov v MySQL.

Vytváranie žiadostí

Existuje mnoho nástrojov, ktoré môžete použiť na testovanie vášho REST API. Postman je populárny testovací nástroj REST APIa môžete ho použiť na testovanie jednoduchého rozhrania API, ktoré ste vytvorili. Po vytvorení tabuľky MySQL a spustení aplikácie Spring môžete spustiť Postmana a experimentovať so štyrmi požiadavkovými slovesami.

POST žiadosť

Táto požiadavka vám umožní vytvárať nových zákazníkov pomocou REST API. Na dokončenie tejto žiadosti budete musieť prejsť do sekcie hlavičiek vašej žiadosti o príspevok a vytvoriť novú hlavičku (Content-Type). Hodnotu tejto hlavičky by ste mali nastaviť na application/json, keďže budete pomocou JSON vytvárať nových zákazníkov.

V tele žiadosti budete musieť zmeniť typ na raw a vložiť svoj JSON. Potom budete musieť vložiť adresu URL príspevku:

Odoslaním žiadosti sa vráti nasledujúca odpoveď:

Môžete vidieť, že žiadosť bola úspešná a nový zákazník má tiež ID.

Žiadosť GET

Teraz, keď máte zákazníka, môžete si ho zobraziť pomocou žiadosti o získanie, ktorá vráti všetkých zákazníkov:

Alebo každý zákazník podľa ID:

Požiadavka PUT

Janet môžete aktualizovať pomocou nového priezviska a e-mailu.

Žiadosť VYMAZAŤ

Janet môžete tiež vymazať z databázy.

Otestujte svoje Spring REST API pomocou JUnit

Pomocou Spring Boot môžete testovať akúkoľvek aplikáciu (vrátane REST API) pomocou testovacieho súboru Spring. Testovanie softvéru je pre Spring Boot dôležité. Každá inicializovaná aplikácia Spring používa na testovanie JUnit a umožňuje vám odosielať požiadavky do vašich REST API.