Zkratka REST znamená REpresentational State Transfer, zatímco API znamená Application Programming Interface. Společně odkazují na REST API. REST API je služba, která přenáší požadavky a odpovědi mezi dvěma softwarovými systémy na REST architektuře.
Architektura REST vytváří webové služby, které jsou přístupné prostřednictvím URL pomocí jednoho ze čtyř sloves požadavku: POST, GET, PUT a DELETE. Dalo by se tedy říci, že REST API je software, který vám umožňuje vytvářet, číst, aktualizovat a mazat zdroje prostřednictvím adres URL.
Můžete se naučit, jak vytvořit REST API pomocí Spring Boot.
Inicializace aplikace Spring Boot
První věc, kterou byste měli udělat, je seznamte se se základy jara a nastavte aplikaci Spring Boot. Budete však muset změnit závislosti. Kromě webové závislosti budete muset získat závislost Spring Data Java Persistent API (JPA) a ovladač pro databázi, kterou chcete použít (tato aplikace bude používat MySQL).
Pro toto REST API budete potřebovat řadič, model a úložiště. Takže REST API bude mít následující strukturu souborů:
Vytvoření modelu
První třídou, kterou budete muset vytvořit, je model zákazníka, který ukládá datovou logiku.
balík com.onlineshopaholics.api.model;
import jakarta.vytrvalost. Sloupec;
import jakarta.vytrvalost. Entita;
import jakarta.vytrvalost. GeneratedValue;
import jakarta.vytrvalost. GenerationType;
import jakarta.vytrvalost. Id;
import jakarta.vytrvalost. Stůl;@Stůl(jméno ="zákazník")
@Entity
veřejnosttřídaZákazník{
@Id
@GeneratedValue(strategie = GenerationType. AUTO)
soukromé Integer id;@Sloupec(jméno ="Jméno zákazníka")
soukromé Název řetězce;soukromé Řetězec e-mailu;
veřejnost Celé číslo getId(){
vrátit se id;
}veřejnostprázdnotasetId(Integer ID){
tento.id = id;
}veřejnost Tětiva getName(){
vrátit se název;
}veřejnostprázdnotasetName(název řetězce){
tento.jméno = jméno;
}veřejnost Tětiva getEmail(){
vrátit se e-mailem;
}
veřejnostprázdnotasetEmail(řetězec e-mailu){
tento.email = email;
}
}
Z výše uvedené třídy zákazníků uvidíte, že každý zákazník bude mít ID, jméno a e-mail. Všimnete si také několika anotací, které slouží různým účelům.
- @Entity: Deklaruje třídu zákazníka jako entitu JPA. To znamená, že JPA použije pole ve třídě k vytvoření sloupců v relační databázi.
- @Tabulka: Určuje název tabulky, která se bude mapovat na třídu modelu zákazníka.
- @Id: Označuje vlastnost, která bude jedinečně identifikovat entitu v databázi.
- @GeneratedValue a @GenerationType: Tyto spolupracují na určení strategie automatického generování pro pole, ke kterému se přidružuje. Pole id tedy automaticky vygeneruje jedinečnou hodnotu pokaždé, když vytvoříte nového zákazníka.
- @Column: Označuje vlastnost, která se mapuje na sloupec v databázi. Vlastnost name se tedy namapuje na sloupec customername v databázi.
Vytvoření úložiště
Toto úložiště vám umožní interakci s daty zákazníků v databázi.
balík com.onlineshopaholics.api.repository;import org.springframework.data.repository. CrudRepository;
import com.onlineshopaholics.api.model. Zákazník;
veřejnostrozhraníCustomerRepositoryrozšiřujeCrudRepository<Zákazník, Celé číslo>{}
Úložiště zákazníků se rozšiřuje Spring's CrudRepositoy rozhraní a předá mu třídu modelu Customer spolu s typem jedinečného identifikátoru entity, Integer.
Rozhraní CrudRepository poskytuje přístup k více než 10 operacím, včetně obecných metod CRUD, které budete potřebovat pro REST API. Protože tedy CrudRepository již definuje metody, které budete potřebovat, není třeba je explicitně deklarovat v rozhraní CustomerRepository.
Vytvoření ovladače
Řadič vám umožňuje aktualizovat data ve vaší databázi pomocí modelu a úložiště.
balík com.onlineshopaholics.api.controller;import java.util. Volitelný;
import org.springframework.beans.factory.anotace. Autowired;
import org.springframework.web.bind.anotace. DeleteMapping;
import org.springframework.web.bind.anotace. GetMapping;
import org.springframework.web.bind.anotace. PathVariable;
import org.springframework.web.bind.anotace. PostMapping;
import org.springframework.web.bind.anotace. PutMapping;
import org.springframework.web.bind.anotace. RequestBody;
import org.springframework.web.bind.anotace. RequestMapping;
import org.springframework.web.bind.anotace. RequestParam;
import org.springframework.web.bind.anotace. ResponseBody;
import org.springframework.web.bind.anotace. RestController;
import com.onlineshopaholics.api.model. Zákazník;
import com.onlineshopaholics.api.repository. CustomerRepository;
@RestController
@RequestMapping("/zákazníci")
veřejnosttřídaCustomerController{
@Autowired
soukromé CustomerRepository customerRepository;
// vytvoření nového zákazníka
@PostMapping("/přidat")
veřejnost Zákazník addNewCustomer(@RequestBody Customer newCustomer){
Uživatel zákazníka = Nový Zákazník();
user.setName (newCustomer.getName());
user.setEmail (newCustomer.getEmail());
customerRepository.save (uživatel);
vrátit se uživatel;
}
// zobrazit všechny zákazníky
@GetMapping("zobrazit/vše")
veřejnost@ResponseBodyIterovatelnégetAllCustomers() {
vrátit se customerRepository.findAll();
}
// zobrazení konkrétního zákazníka
@GetMapping("view/{id}")
veřejnost VolitelnýgetCustomer(@PathVariable Integer id) {
vrátit se customerRepository.findById (id);
}
// aktualizuje stávajícího zákazníka
@PutMapping("/edit/{id}")
veřejnost Tětiva Aktualizace( @RequestBody Customer updateCustomer, @PathVariable Integer id){
vrátit se customerRepository.findById (id)
.map (zákazník -> {
customer.setName (updateCustomer.getName());
customer.setEmail (updateCustomer.getEmail());
customerRepository.save (zákazník);
vrátit se"Podrobnosti zákazníka byly úspěšně aktualizovány!";
}).orElseGet(() -> {
vrátit se"Tento zákazník neexistuje";
});
}
// smazat zákazníka
@DeleteMapping("delete/{id}")
veřejnost Tětiva vymazat(@PathVariable("id")celé číslo) {
customerRepository.deleteById (id);
vrátit se"Zákazník byl úspěšně smazán!";
}
}
Výše uvedený řadič vybavuje REST API operacemi CRUD pomocí pěti CrudRepository
- @RestController: Tato anotace slouží dvěma účelům. Označuje třídu pro zjišťování skenováním komponent. Také říká Springu, aby zapsal návratovou hodnotu pro všechny metody v této třídě do těla odpovědi.
- @RequestMapping: Definuje vzor základního požadavku, který bude kontrolér zpracovávat. Takže tento kontrolér bude zpracovávat všechny požadavky na „/customers“.
- @ResponseBody: Umožňuje metodě vrátit celou entitu.
- @RequestBody: Umožňuje převést tělo požadavku na objekt.
- @RequestParam: Umožňuje izolovat jednu vlastnost z objektu.
- @PathVariable: Umožňuje mapovat hodnotu požadavku na zástupný symbol. Mapuje ID dané metodě delete s existující hodnotou v databázi.
- @PostMapping: Umožňuje vytvářet zdroje.
- @GetMapping: Umožňuje číst zdrojová data.
- @PutMapping: Umožňuje aktualizovat zdroje.
- @DeleteMapping: Umožňuje smazat zdroje.
Připojení databáze k vaší aplikaci
Chcete-li připojit databázi k jakékoli aplikaci Spring, budete muset použít aplikace.vlastnosti soubor ve složce zdrojů. Tento soubor je zpočátku prázdný, takže jej můžete naplnit vhodnými vlastnostmi pro databázi, kterou chcete použít. Tato aplikace bude používat databázi MySQL, takže soubor application.properties bude obsahovat následující data:
spring.jpa.hibernate.ddl-auto=aktualizace
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. Řidič
Výše uvedené údaje ukazují, že tato aplikace se bude připojovat k databázi MySQL s názvem onlineshopaholics, s uživatelským jménem „root“ a heslem „securepw“. Dalším krokem je vytvoření databáze a tabulky zákazníků v MySQL.
Vytváření požadavků
Existuje mnoho nástrojů, které můžete použít k testování vašeho REST API. Postman je oblíbený testovací nástroj REST APIa můžete jej použít k testování jednoduchého rozhraní API, které jste vytvořili. Po vytvoření tabulky MySQL a spuštění aplikace Spring můžete spustit Postmana a experimentovat se čtyřmi slovesy požadavku.
Žádost o POST
Tento požadavek vám umožní vytvořit nové zákazníky pomocí REST API. Chcete-li dokončit tento požadavek, budete muset přejít do sekce záhlaví vaší žádosti o příspěvek a vytvořit nové záhlaví (Content-Type). Hodnotu této hlavičky byste měli nastavit na application/json, protože pomocí JSON budete vytvářet nové zákazníky.
V těle požadavku budete muset změnit typ na raw a vložit svůj JSON. Poté budete muset vložit adresu URL příspěvku:
Odeslání požadavku vrátí následující odpověď:
Můžete vidět, že žádost byla úspěšná, a nový zákazník má také ID.
Žádost GET
Nyní, když máte zákazníka, můžete jej zobrazit pomocí požadavku získat, který vrátí všechny zákazníky:
Nebo každý zákazník podle ID:
Požadavek PUT
Janet můžete aktualizovat pomocí nového příjmení a e-mailu.
Požadavek VYMAZAT
Janet můžete také odstranit z databáze.
Otestujte své Spring REST API pomocí JUnit
S Spring Boot můžete testovat jakoukoli aplikaci (včetně REST API) pomocí testovacího souboru Spring. Testování softwaru je pro Spring Boot důležité. Každá inicializovaná aplikace Spring používá k testování JUnit a umožňuje vám odesílat požadavky do vašich REST API.