Такие читатели, как вы, помогают поддерживать MUO. Когда вы совершаете покупку по ссылкам на нашем сайте, мы можем получать партнерскую комиссию. Читать далее.

Аббревиатура REST расшифровывается как REpresentational State Transfer, а API расшифровывается как Application Programming Interface. Вместе они относятся к REST API. REST API — это служба, которая передает запросы и ответы между двумя программными системами в архитектуре REST.

Архитектура REST создает веб-службы, доступные через URL-адреса, используя один из четырех глаголов запроса: POST, GET, PUT и DELETE. Таким образом, вы могли бы сказать, что REST API — это программное обеспечение, которое позволяет вам создавать, читать, обновлять и удалять ресурсы через URL-адреса.

Вы можете узнать, как создать REST API с помощью Spring Boot.

Инициализация приложения Spring Boot

Первое, что вы должны сделать, это ознакомиться с основами Spring и настройте приложение Spring Boot. Однако вам нужно изменить зависимости. В дополнение к веб-зависимости вам потребуется получить зависимость Spring Data Java Persistent API (JPA) и драйвер для базы данных, которую вы собираетесь использовать (это приложение будет использовать MySQL).

instagram viewer

Для этого REST API вам понадобится контроллер, модель и репозиторий. Итак, REST API будет иметь следующую файловую структуру:

Создание модели

Первый класс, который вам нужно создать, — это модель клиента, в которой хранится логика данных.

упаковка com.onlineshopaholics.api.model;

Импортировать джакарта.настойчивость. Столбец;
Импортировать джакарта.настойчивость. Сущность;
Импортировать джакарта.настойчивость. Сгенерированное значение;
Импортировать джакарта.настойчивость. Тип поколения;
Импортировать джакарта.настойчивость. Идентификатор;
Импортировать джакарта.настойчивость. Стол;

@Стол(имя="клиент")
@Сущность
публичныйсортКлиент{
@Идентификатор
@GeneratedValue(стратегия = GenerationType. АВТО)
частный Целочисленный идентификатор;

@Столбец(имя="Имя Клиента")
частный Имя строки;

частный Строковый адрес электронной почты;

публичный Целое число получить идентификатор(){
возвращаться идентификатор;
}

публичныйпустотаустановить идентификатор(целочисленный идентификатор){
этот.id = идентификатор;
}

публичный Нить получить имя(){
возвращаться имя;
}

публичныйпустотаИмя набора(имя строки){
этот.имя = имя;
}

публичный Нить получить электронную почту(){
возвращаться электронная почта;
}

публичныйпустотаsetEmail(строка электронной почты){
этот.электронная почта = электронная почта;
}
}

Из приведенного выше класса клиентов вы увидите, что у каждого клиента будет идентификатор, имя и адрес электронной почты. Вы также заметите несколько аннотаций, которые служат разным целям.

  • @Entity: объявляет класс клиента как объект JPA. Это означает, что JPA будет использовать поля класса для создания столбцов в реляционной базе данных.
  • @Table: указывает имя таблицы, которая будет отображаться в классе модели клиента.
  • @Id: определяет свойство, которое однозначно идентифицирует объект в базе данных.
  • @GeneratedValue и @GenerationType: они работают вместе, чтобы указать стратегию автоматического создания для поля, с которым оно связано. Таким образом, поле id будет автоматически генерировать уникальное значение каждый раз, когда вы создаете нового клиента.
  • @Column: обозначает свойство, которое сопоставляется со столбцом в базе данных. Таким образом, свойство имени будет отображаться в столбце имени клиента в базе данных.

Создание репозитория

Этот репозиторий позволит вам взаимодействовать с данными клиентов в базе данных.

упаковка com.onlineshopaholics.api.repository;

Импортировать org.springframework.data.repository. сырой репозиторий;
Импортировать com.onlineshopaholics.api.model. Клиент;

публичныйинтерфейсРепозиторий клиентоврасширяетCrudRepository<Клиент, Целое число>{}

Репозиторий клиентов расширяется CrudRepositoy от Spring интерфейс, передав ему класс модели Customer вместе с типом уникального идентификатора сущности, Integer.

Интерфейс CrudRepository обеспечивает доступ к более чем 10 операциям, включая общие методы CRUD, которые вам понадобятся для REST API. Итак, поскольку CrudRepository уже определяет нужные вам методы, нет необходимости явно объявлять их в интерфейсе CustomerRepository.

Создание контроллера

Контроллер позволяет обновлять данные в вашей базе данных, используя модель и репозиторий.

упаковка com.onlineshopaholics.api.controller;

Импортировать java.util. Необязательный;

Импортировать org.springframework.beans.factory.annotation. Автопроводка;
Импортировать org.springframework.web.bind.annotation. Удалить сопоставление;
Импортировать org.springframework.web.bind.annotation. получить сопоставление;
Импортировать org.springframework.web.bind.annotation. переменная пути;
Импортировать org.springframework.web.bind.annotation. Посткартографирование;
Импортировать org.springframework.web.bind.annotation. Поместите маппинг;
Импортировать org.springframework.web.bind.annotation. тело запроса;
Импортировать org.springframework.web.bind.annotation. сопоставление запросов;
Импортировать org.springframework.web.bind.annotation. ЗапросПарам;
Импортировать org.springframework.web.bind.annotation. тело ответа;
Импортировать org.springframework.web.bind.annotation. Рестконтроллер;

Импортировать com.onlineshopaholics.api.model. Клиент;
Импортировать com.onlineshopaholics.api.репозиторий. клиентский репозиторий;

@RestController
@RequestMapping("/клиенты")
публичныйсортКлиентКонтроллер{
@Autowired
частный CustomerRepository клиентский репозиторий;

// создаем нового клиента
@PostMapping("/добавлять")
публичный Клиент добавитьНовыйКлиент(@RequestBody Клиент новыйКлиент){
Пользователь клиента = новый Клиент();
user.setName(newCustomer.getName());
user.setEmail(newCustomer.getEmail());
customerRepository.save (пользователь);
возвращаться пользователь;
}

// просмотреть всех клиентов
@GetMapping("посмотреть все")
публичный@ResponseBodyИтерируемыйgetAllCustomers(){
возвращаться клиентский репозиторий.findAll();
}

// просмотр конкретного клиента
@GetMapping("вид/{id}")
публичный НеобязательныйполучитьКлиент(@PathVariable Целочисленный идентификатор){
возвращаться customerRepository.findById (идентификатор);
}

// обновить существующего клиента
@PutMapping("/ изменить/{идентификатор}")
публичный Нить обновлять( @RequestBody Customer updateCustomer, @PathVariable Integer id){
возвращаться customerRepository.findById (идентификатор)
.map (клиент -> {
имя_клиента.setName(updateCustomer.getName());
customer.setEmail(updateCustomer.getEmail());
customerRepository.save (клиент);
возвращаться"Информация о клиенте успешно обновлена!";
}).orElseGet(() -> {
возвращаться"Такого клиента не существует";
});
}

// удалить клиента
@DeleteMapping("удалить/{id}")
публичный Нить удалить(@PathVariable("идентификатор")Целочисленный идентификатор) {
customerRepository.deleteById (идентификатор);
возвращаться"Клиент успешно удален!";
}
}

Приведенный выше контроллер снабжает REST API операциями CRUD, используя пять CrudRepository. методы интерфейса (каждый назначается определенному методу). Контроллер также использует несколько важных аннотаций Spring, которые позволяют ему выполнять свои функции.

  • @RestController: эта аннотация служит двум целям. Он помечает класс для обнаружения сканированием компонентов. Он также сообщает Spring записать возвращаемое значение для всех методов этого класса в тело ответа.
  • @RequestMapping: определяет базовый шаблон запроса, который будет обрабатывать контроллер. Таким образом, этот контроллер будет обрабатывать все запросы к «/customers».
  • @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/онлайншопоголики
spring.datasource.username = корень
spring.datasource.password=securepw
spring.datasource.имя-класса-драйвера = com.mysql.cj.jdbc. Водитель

Приведенные выше данные показывают, что это приложение будет подключаться к базе данных MySQL под названием onlineshopaholics с именем пользователя «root» и «securepw» в качестве пароля. Следующим шагом будет создание базы данных и таблицы клиентов в MySQL.

Создание запросов

Существует множество инструментов, которые вы можете использовать для тестирования REST API. Postman — популярный инструмент для тестирования REST API., и вы можете использовать его для тестирования простого API, который вы создали. После создания таблицы MySQL и запуска приложения Spring вы можете запустить Postman и поэкспериментировать с четырьмя глаголами запроса.

Почтовый запрос

Этот запрос позволит вам создавать новых клиентов с помощью REST API. Чтобы выполнить этот запрос, вам нужно перейти в раздел заголовков вашего почтового запроса и создать новый заголовок (Content-Type). Вы должны установить значение этого заголовка в application/json, так как вы будете создавать новых клиентов, используя JSON.

В теле запроса вам нужно будет изменить тип на необработанный и вставить свой JSON. Затем вам нужно будет вставить URL поста:

Отправка запроса вернет следующий ответ:

Вы можете видеть, что запрос был выполнен успешно, и у нового клиента также есть идентификатор.

ПОЛУЧИТЬ запрос

Теперь, когда у вас есть клиент, вы можете просмотреть его с помощью запроса на получение, который возвращает всех клиентов:

Или каждого клиента по id:

PUT-запрос

Вы можете обновить Джанет, указав новую фамилию и адрес электронной почты.

УДАЛИТЬ запрос

Вы также можете удалить Джанет из базы данных.

Протестируйте свой Spring REST API с помощью JUnit

С помощью Spring Boot вы можете протестировать любое приложение (включая REST API), используя тестовый файл Spring. Тестирование программного обеспечения важно для Spring Boot. Каждое инициализированное приложение Spring использует JUnit для тестирования и позволяет отправлять запросы к вашим REST API.