Акронимът REST означава REpresentational State Transfer, докато API означава интерфейс за програмиране на приложения. Заедно те се отнасят до REST API. REST API е услуга, която прехвърля заявки и отговори между две софтуерни системи на REST архитектура.
Архитектурата REST изгражда уеб услуги, които са достъпни чрез URL адреси, използвайки един от четирите глагола за заявка: POST, GET, PUT и DELETE. Така че можете да кажете, че REST API е софтуер, който ви позволява да създавате, четете, актуализирате и изтривате ресурси чрез URL адреси.
Можете да научите как да създадете REST API с помощта на Spring Boot.
Инициализиране на приложението Spring Boot
Първото нещо, което трябва да направите е запознайте се с основите на пролетта и настройте приложение Spring Boot. Все пак ще трябва да промените зависимостите. В допълнение към уеб зависимостта, ще трябва да получите зависимостта Spring Data Java Persistent API (JPA) и драйвера за базата данни, която възнамерявате да използвате (това приложение ще използва MySQL).
За този REST API ще ви е необходим контролер, модел и хранилище. И така, REST API ще има следната файлова структура:
Създаване на модела
Първият клас, който ще трябва да създадете, е клиентският модел, който съхранява логиката на данните.
пакет com.onlineshopaholics.api.model;
импортиране jakarta.постоянство. Колона;
импортиране jakarta.постоянство. Субект;
импортиране jakarta.постоянство. GeneratedValue;
импортиране jakarta.постоянство. GenerationType;
импортиране jakarta.постоянство. Документ за самоличност;
импортиране jakarta.постоянство. маса;@Таблица(име="клиент")
@Entity
публиченкласКлиент{
@Документ за самоличност
@GeneratedValue(стратегия = GenerationType. АВТОМАТИЧЕН)
частен Идентификатор на цяло число;@Колона(име="Потребителско име")
частен Име на низ;частен низов имейл;
публичен Цяло число getId(){
връщане документ за самоличност;
}публиченневалиденsetId(Цяло число){
това.id = идентификатор;
}публичен низ getName(){
връщане име;
}публиченневалиденsetName(Име на низ){
това.name = име;
}публичен низ getEmail(){
връщане електронна поща;
}
публиченневалиденsetEmail(имейл низ){
това.email = имейл;
}
}
От класа на клиента по-горе ще видите, че всеки клиент ще има идентификатор, име и имейл. Ще забележите и няколко анотации, които служат за различни цели.
- @Entity: Декларира клиентския клас като JPA обект. Това означава, че JPA ще използва полетата в класа за създаване на колони в релационна база данни.
- @Table: Определя името на таблицата, която ще се съпостави с класа на клиентския модел.
- @Id: Определя свойство, което уникално ще идентифицира обекта в базата данни.
- @GeneratedValue и @GenerationType: Те работят заедно, за да уточнят стратегия за автоматично генериране за полето, с което се асоциира. Така че полето за id автоматично ще генерира уникална стойност всеки път, когато създавате нов клиент.
- @Column: Означава свойство, което се преобразува в колона в базата данни. И така, свойството име ще се съпостави с колона име на клиента в базата данни.
Създаване на хранилището
Това хранилище ще ви позволи да взаимодействате с клиентските данни в базата данни.
пакет com.onlineshopaholics.api.repository;импортиране org.springframework.data.repository. CrudRepository;
импортиране com.onlineshopaholics.api.model. клиент;
публиченинтерфейсCustomerRepositoryсе простираCrudRepository<Клиент, Цяло число>{}
Клиентското хранилище се разширява CrudRepositoy на Spring интерфейс, предавайки му класа на модела на клиента заедно с типа на уникалния идентификатор за обекта, Integer.
Интерфейсът CrudRepository предоставя достъп до над 10 операции, включително общите CRUD методи, които ще ви трябват за REST API. Така че, тъй като CrudRepository вече дефинира методите, от които ще се нуждаете, няма нужда да ги декларирате изрично в интерфейса на CustomerRepository.
Създаване на контролера
Контролерът ви позволява да актуализирате данните във вашата база данни, като използвате модела и хранилището.
пакет com.onlineshopaholics.api.controller;импортиране java.util. По избор;
импортиране org.springframework.beans.factory.annotation. Autowired;
импортиране org.springframework.web.bind.аннотация. DeleteMapping;
импортиране org.springframework.web.bind.аннотация. GetMapping;
импортиране org.springframework.web.bind.аннотация. PathVariable;
импортиране org.springframework.web.bind.аннотация. PostMapping;
импортиране org.springframework.web.bind.аннотация. PutMapping;
импортиране org.springframework.web.bind.аннотация. RequestBody;
импортиране org.springframework.web.bind.аннотация. RequestMapping;
импортиране org.springframework.web.bind.аннотация. RequestParam;
импортиране org.springframework.web.bind.аннотация. ResponseBody;
импортиране org.springframework.web.bind.аннотация. RestController;
импортиране com.onlineshopaholics.api.model. клиент;
импортиране com.onlineshopaholics.api.repository. CustomerRepository;
@RestController
@RequestMapping("/клиенти")
публиченкласCustomerController{
@Autowired
частен CustomerRepository customerRepository;
// създаване на нов клиент
@PostMapping("/добави")
публичен Клиент addNewCustomer(@RequestBody Customer newCustomer){
Клиентски потребител = нов Клиент();
user.setName (newCustomer.getName());
user.setEmail (newCustomer.getEmail());
customerRepository.save (потребител);
връщане потребител;
}
// преглед на всички клиенти
@GetMapping("виж всички")
публичен@ResponseBodyИтерируемgetAllCustomers() {
връщане customerRepository.findAll();
}
// преглед на конкретен клиент
@GetMapping("изглед/{id}")
публичен Не е задължителноgetCustomer(@PathVariable Integer id) {
връщане customerRepository.findById (id);
}
// актуализиране на съществуващ клиент
@PutMapping("/edit/{id}")
публичен низ актуализация(@RequestBody Customer updateCustomer, @PathVariable Integer id){
връщане customerRepository.findById (id)
.map (клиент -> {
customer.setName (updateCustomer.getName());
customer.setEmail (updateCustomer.getEmail());
customerRepository.save (клиент);
връщане„Данните за клиента са актуализирани успешно!“;
}).orElseGet(() -> {
връщане„Този клиент не съществува“;
});
}
// изтриване на клиент
@DeleteMapping("изтрий/{id}")
публичен низ Изтрий(@PathVariable("документ за самоличност")ID на цяло число) {
customerRepository.deleteById (id);
връщане„Клиентът е изтрит успешно!“;
}
}
Контролерът по-горе оборудва REST API с CRUD операции, като използва пет от CrudRepository
- @RestController: Тази анотация служи за две цели. Той маркира клас за откриване чрез сканиране на компоненти. Той също така казва на Spring да напише върнатата стойност за всички методи в този клас в тялото на отговора.
- @RequestMapping: Дефинира основния модел на заявка, който контролерът ще обработва. Така че този контролер ще обработва всички заявки към „/клиенти“.
- @ResponseBody: Позволява на метод да върне цял обект.
- @RequestBody: Позволява ви да конвертирате тялото на заявката в обект.
- @RequestParam: Позволява ви да изолирате едно свойство от обект.
- @PathVariable: Позволява ви да нанесете стойност на заявка към контейнер. Той съпоставя идентификатора, даден на метода за изтриване, със съществуваща стойност в базата данни.
- @PostMapping: Позволява ви да създавате ресурси.
- @GetMapping: Позволява ви да четете данни за ресурси.
- @PutMapping: Позволява ви да актуализирате ресурси.
- @DeleteMapping: Позволява ви да изтривате ресурси.
Свързване на базата данни с вашето приложение
За да свържете база данни към всяко приложение на Spring, ще трябва да използвате приложение.свойства файл в папката с ресурси. Този файл първоначално е празен, така че можете да го попълните с подходящите свойства за базата данни, която възнамерявате да използвате. Това приложение ще използва MySQL база данни, така че файлът application.properties ще съдържа следните данни:
spring.jpa.hibernate.ddl-auto=актуализация
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. Шофьор
Данните по-горе показват, че това приложение ще се свързва с MySQL база данни, наречена onlineshopaholics, с „root“ потребителско име и „securepw“ като парола. Следващата ви стъпка е да създадете базата данни и клиентската таблица в MySQL.
Създаване на заявки
Има много инструменти, които можете да използвате, за да тествате своя REST API. Postman е популярен инструмент за тестване на REST APIи можете да го използвате, за да тествате простия API, който сте създали. След като създадете MySQL таблицата и стартирате приложението Spring, можете да стартирате Postman и да експериментирате с четирите глагола за заявка.
POST заявка
Тази заявка ще ви позволи да създавате нови клиенти с помощта на REST API. За да завършите тази заявка, ще трябва да отидете в секцията със заглавки на вашата заявка за публикация и да създадете нова заглавка (Content-Type). Трябва да зададете стойността на тази заглавка на application/json, тъй като ще създавате нови клиенти с помощта на JSON.
В тялото на заявката ще трябва да промените типа на raw и да вмъкнете своя JSON. След това ще трябва да вмъкнете URL адреса на публикацията:
Изпращането на заявката ще върне следния отговор:
Можете да видите, че заявката е успешна и новият клиент също има идентификатор.
GET Заявка
Сега, когато имате клиент, можете да го видите със заявката за получаване, която връща всички клиенти:
Или всеки клиент по id:
PUT Заявка
Можете да актуализирате Janet с ново фамилно име и имейл.
ИЗТРИВАНЕ на заявка
Можете също да изтриете Janet от базата данни.
Тествайте своя Spring REST API с помощта на JUnit
С Spring Boot можете да тествате всяко приложение (включително REST API), като използвате тестовия файл на Spring. Тестването на софтуера е важно за Spring Boot. Всяко инициализирано Spring приложение използва JUnit за тестване и ви позволява да изпращате заявки към вашите REST API.